System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact abb6f4268b9e58f17ddf52c63e085f1355cf36bf:


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 73 77 69 74 63 68 20 28 5f 64 61 74 65     switch (_date
53f0: 74 69 6d 65 46 6f 72 6d 61 74 29 0d 0a 20 20 20  timeFormat)..   
5400: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5410: 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65 44      case SQLiteD
5420: 61 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73  ateFormats.Ticks
5430: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
5440: 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56 61     return dateVa
5450: 6c 75 65 2e 54 69 63 6b 73 2e 54 6f 53 74 72 69  lue.Ticks.ToStri
5460: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
5470: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
5480: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
5490: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
54a0: 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a  rmats.JulianDay:
54b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
54c0: 20 20 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69 61    return ToJulia
54d0: 6e 44 61 79 28 64 61 74 65 56 61 6c 75 65 29 2e  nDay(dateValue).
54e0: 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65  ToString(Culture
54f0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
5500: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
5510: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
5520: 44 61 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78  DateFormats.Unix
5530: 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20 20  Epoch:..        
5540: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
5550: 28 6c 6f 6e 67 29 28 64 61 74 65 56 61 6c 75 65  (long)(dateValue
5560: 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45 70  .Subtract(UnixEp
5570: 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d  och).Ticks / Tim
5580: 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53 65  eSpan.TicksPerSe
5590: 63 6f 6e 64 29 29 2e 54 6f 53 74 72 69 6e 67 28  cond)).ToString(
55a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
55b0: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
55c0: 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74  ormats.Invariant
55d0: 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20  Culture:..      
55e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
55f0: 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72   dateValue.ToStr
5600: 69 6e 67 28 28 5f 64 61 74 65 74 69 6d 65 46 6f  ing((_datetimeFo
5610: 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75  rmatString != nu
5620: 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ll) ?..         
5630: 20 20 20 20 20 20 20 20 20 20 20 5f 64 61 74 65             _date
5640: 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  timeFormatString
5650: 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74 2c 20 43   : FullFormat, C
5660: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
5670: 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  iantCulture);.. 
5680: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
5690: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
56a0: 73 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65  s.CurrentCulture
56b0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
56c0: 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56 61     return dateVa
56d0: 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 5f 64  lue.ToString((_d
56e0: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
56f0: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a  ing != null) ?..
5700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5710: 20 20 20 20 5f 64 61 74 65 74 69 6d 65 46 6f 72      _datetimeFor
5720: 6d 61 74 53 74 72 69 6e 67 20 3a 20 46 75 6c 6c  matString : Full
5730: 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 65 49  Format, CultureI
5740: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
5750: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  re);..          
5760: 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
5770: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
5780: 72 6e 20 28 64 61 74 65 56 61 6c 75 65 2e 4b 69  rn (dateValue.Ki
5790: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
57a0: 6e 64 2e 55 6e 73 70 65 63 69 66 69 65 64 29 20  nd.Unspecified) 
57b0: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
57c0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 2e         DateTime.
57d0: 53 70 65 63 69 66 79 4b 69 6e 64 28 64 61 74 65  SpecifyKind(date
57e0: 56 61 6c 75 65 2c 20 5f 64 61 74 65 74 69 6d 65  Value, _datetime
57f0: 4b 69 6e 64 29 2e 54 6f 53 74 72 69 6e 67 28 0d  Kind).ToString(.
5800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5810: 20 20 20 20 20 20 20 20 20 47 65 74 44 61 74 65           GetDate
5820: 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 5f  TimeKindFormat(_
5830: 64 61 74 65 74 69 6d 65 4b 69 6e 64 2c 20 5f 64  datetimeKind, _d
5840: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
5850: 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ing),..         
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5870: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49     CultureInfo.I
5880: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
5890: 20 3a 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53   : dateValue.ToS
58a0: 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20  tring(..        
58b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58c0: 47 65 74 44 61 74 65 54 69 6d 65 4b 69 6e 64 46  GetDateTimeKindF
58d0: 6f 72 6d 61 74 28 64 61 74 65 56 61 6c 75 65 2e  ormat(dateValue.
58e0: 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 46  Kind, _datetimeF
58f0: 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d 0a 20  ormatString),.. 
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75             Cultu
5920: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
5930: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
5940: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
5950: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
5960: 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 74 65 72 6e  ..    /// Intern
5970: 61 6c 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63  al function to c
5980: 6f 6e 76 65 72 74 20 61 20 55 54 46 2d 38 20 65  onvert a UTF-8 e
5990: 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66  ncoded IntPtr of
59a0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c   the specified l
59b0: 65 6e 67 74 68 20 74 6f 20 61 20 44 61 74 65 54  ength to a DateT
59c0: 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ime...    /// </
59d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
59e0: 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
59f0: 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 61 20 63   /// This is a c
5a00: 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74  onvenience funct
5a10: 69 6f 6e 2c 20 77 68 69 63 68 20 66 69 72 73 74  ion, which first
5a20: 20 63 61 6c 6c 73 20 54 6f 53 74 72 69 6e 67 28   calls ToString(
5a30: 29 20 6f 6e 20 74 68 65 20 49 6e 74 50 74 72 20  ) on the IntPtr 
5a40: 74 6f 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f  to convert it to
5a50: 20 61 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20   a string, then 
5a60: 63 61 6c 6c 73 0d 0a 20 20 20 20 2f 2f 2f 20 54  calls..    /// T
5a70: 6f 44 61 74 65 54 69 6d 65 28 29 20 6f 6e 20 74  oDateTime() on t
5a80: 68 65 20 73 74 72 69 6e 67 20 74 6f 20 72 65 74  he string to ret
5a90: 75 72 6e 20 61 20 44 61 74 65 54 69 6d 65 2e 0d  urn a DateTime..
5aa0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
5ab0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
5ac0: 72 61 6d 20 6e 61 6d 65 3d 22 70 74 72 22 3e 41  ram name="ptr">A
5ad0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
5ae0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 73 74  UTF-8 encoded st
5af0: 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ring</param>..  
5b00: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
5b10: 65 3d 22 6c 65 6e 22 3e 54 68 65 20 6c 65 6e 67  e="len">The leng
5b20: 74 68 20 69 6e 20 62 79 74 65 73 20 6f 66 20 74  th in bytes of t
5b30: 68 65 20 73 74 72 69 6e 67 3c 2f 70 61 72 61 6d  he string</param
5b40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
5b50: 72 6e 73 3e 54 68 65 20 70 61 72 73 65 64 20 44  rns>The parsed D
5b60: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 3c 2f 72  ateTime value</r
5b70: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
5b80: 65 72 6e 61 6c 20 44 61 74 65 54 69 6d 65 20 54  ernal DateTime T
5b90: 6f 44 61 74 65 54 69 6d 65 28 49 6e 74 50 74 72  oDateTime(IntPtr
5ba0: 20 70 74 72 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a   ptr, int len)..
5bb0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74      {..      ret
5bc0: 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 54  urn ToDateTime(T
5bd0: 6f 53 74 72 69 6e 67 28 70 74 72 2c 20 6c 65 6e  oString(ptr, len
5be0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  ));..    }..    
5bf0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
5c00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
5c10: 0a 20 20 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d  .    /// Smart m
5c20: 65 74 68 6f 64 20 6f 66 20 73 70 6c 69 74 74 69  ethod of splitti
5c30: 6e 67 20 61 20 73 74 72 69 6e 67 2e 20 20 53 6b  ng a string.  Sk
5c40: 69 70 73 20 71 75 6f 74 65 64 20 65 6c 65 6d 65  ips quoted eleme
5c50: 6e 74 73 2c 20 72 65 6d 6f 76 65 73 20 74 68 65  nts, removes the
5c60: 20 71 75 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f   quotes...    //
5c70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
5c80: 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
5c90: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 73 70  .    /// This sp
5ca0: 6c 69 74 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72  lit function wor
5cb0: 6b 73 20 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65  ks somewhat like
5cc0: 20 74 68 65 20 53 74 72 69 6e 67 2e 53 70 6c 69   the String.Spli
5cd0: 74 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20  t() function in 
5ce0: 74 68 61 74 20 69 74 20 62 72 65 61 6b 73 20 61  that it breaks a
5cf0: 70 61 72 74 20 61 20 73 74 72 69 6e 67 20 69 6e  part a string in
5d00: 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63  to..    /// piec
5d10: 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  es and returns t
5d20: 68 65 20 70 69 65 63 65 73 20 61 73 20 61 6e 20  he pieces as an 
5d30: 61 72 72 61 79 2e 20 20 54 68 65 20 70 72 69 6d  array.  The prim
5d40: 61 72 79 20 64 69 66 66 65 72 65 6e 63 65 73 20  ary differences 
5d50: 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c  are:..    /// <l
5d60: 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74  ist type="bullet
5d70: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  ">..    /// <ite
5d80: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f  m><description>O
5d90: 6e 6c 79 20 6f 6e 65 20 63 68 61 72 61 63 74 65  nly one characte
5da0: 72 20 63 61 6e 20 62 65 20 70 72 6f 76 69 64 65  r can be provide
5db0: 64 20 61 73 20 61 20 73 65 70 61 72 61 74 6f 72  d as a separator
5dc0: 20 63 68 61 72 61 63 74 65 72 3c 2f 64 65 73 63   character</desc
5dd0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5de0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5df0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74  description>Quot
5e00: 65 64 20 74 65 78 74 20 69 6e 73 69 64 65 20 74  ed text inside t
5e10: 68 65 20 73 74 72 69 6e 67 20 69 73 20 73 6b 69  he string is ski
5e20: 70 70 65 64 20 6f 76 65 72 20 77 68 65 6e 20 73  pped over when s
5e30: 65 61 72 63 68 69 6e 67 20 66 6f 72 20 74 68 65  earching for the
5e40: 20 73 65 70 61 72 61 74 6f 72 2c 20 61 6e 64 20   separator, and 
5e50: 74 68 65 20 71 75 6f 74 65 73 20 61 72 65 20 72  the quotes are r
5e60: 65 6d 6f 76 65 64 2e 3c 2f 64 65 73 63 72 69 70  emoved.</descrip
5e70: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
5e80: 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20    /// </list>.. 
5e90: 20 20 20 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20     /// Thus, if 
5ea0: 73 70 6c 69 74 74 69 6e 67 20 74 68 65 20 66 6f  splitting the fo
5eb0: 6c 6c 6f 77 69 6e 67 20 73 74 72 69 6e 67 20 6c  llowing string l
5ec0: 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d  ooking for a com
5ed0: 6d 61 3a 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  ma:<br/>..    //
5ee0: 2f 20 4f 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65  / One,Two, "Thre
5ef0: 65 2c 20 46 6f 75 72 22 2c 20 46 69 76 65 3c 62  e, Four", Five<b
5f00: 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72  r/>..    /// <br
5f10: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  />..    /// The 
5f20: 72 65 73 75 6c 74 69 6e 67 20 61 72 72 61 79 20  resulting array 
5f30: 77 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72  would contain<br
5f40: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20  />..    /// [0] 
5f50: 4f 6e 65 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  One<br/>..    //
5f60: 2f 20 5b 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a  / [1] Two<br/>..
5f70: 20 20 20 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65      /// [2] Thre
5f80: 65 2c 20 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20  e, Four<br/>..  
5f90: 20 20 2f 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62    /// [3] Five<b
5fa0: 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72  r/>..    /// <br
5fb0: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65  />..    /// Note
5fc0: 20 74 68 61 74 20 74 68 65 20 6c 65 61 64 69 6e   that the leadin
5fd0: 67 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 73  g and trailing s
5fe0: 70 61 63 65 73 20 77 65 72 65 20 72 65 6d 6f 76  paces were remov
5ff0: 65 64 20 66 72 6f 6d 20 65 61 63 68 20 69 74 65  ed from each ite
6000: 6d 20 64 75 72 69 6e 67 20 74 68 65 20 73 70 6c  m during the spl
6010: 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  it...    /// </r
6020: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
6030: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
6040: 75 72 63 65 22 3e 53 6f 75 72 63 65 20 73 74 72  urce">Source str
6050: 69 6e 67 20 74 6f 20 73 70 6c 69 74 20 61 70 61  ing to split apa
6060: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
6070: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6080: 22 73 65 70 61 72 61 74 6f 72 22 3e 53 65 70 61  "separator">Sepa
6090: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 3c  rator character<
60a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
60b0: 20 3c 72 65 74 75 72 6e 73 3e 41 20 73 74 72 69   <returns>A stri
60c0: 6e 67 20 61 72 72 61 79 20 6f 66 20 74 68 65 20  ng array of the 
60d0: 73 70 6c 69 74 20 75 70 20 65 6c 65 6d 65 6e 74  split up element
60e0: 73 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  s</returns>..   
60f0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
6100: 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74  tring[] Split(st
6110: 72 69 6e 67 20 73 6f 75 72 63 65 2c 20 63 68 61  ring source, cha
6120: 72 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20  r separator)..  
6130: 20 20 7b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b    {..      char[
6140: 5d 20 74 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61  ] toks = new cha
6150: 72 5b 32 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70  r[2] { '\"', sep
6160: 61 72 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20  arator };..     
6170: 20 63 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e   char[] quot = n
6180: 65 77 20 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22  ew char[1] { '\"
6190: 27 20 7d 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20  ' };..      int 
61a0: 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69  n = 0;..      Li
61b0: 73 74 3c 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20  st<string> ls = 
61c0: 6e 65 77 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  new List<string>
61d0: 28 29 3b 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  ();..      strin
61e0: 67 20 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68  g s;....      wh
61f0: 69 6c 65 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67  ile (source.Leng
6200: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b  th > 0)..      {
6210: 0d 0a 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f  ..        n = so
6220: 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28  urce.IndexOfAny(
6230: 74 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20  toks, n);..     
6240: 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20     if (n == -1) 
6250: 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
6260: 69 66 20 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d  if (source[n] ==
6270: 20 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20   toks[0])..     
6280: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6290: 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63  //source = sourc
62a0: 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d  e.Remove(n, 1);.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20 73  .          n = s
62c0: 6f 75 72 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79  ource.IndexOfAny
62d0: 28 71 75 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a  (quot, n + 1);..
62e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 20            if (n 
62f0: 3d 3d 20 2d 31 29 0d 0a 20 20 20 20 20 20 20 20  == -1)..        
6300: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6310: 20 2f 2f 73 6f 75 72 63 65 20 3d 20 22 5c 22 22   //source = "\""
6320: 20 2b 20 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20   + source;..    
6330: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
6340: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
6350: 20 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20         n++;..   
6360: 20 20 20 20 20 20 20 2f 2f 73 6f 75 72 63 65 20         //source 
6370: 3d 20 73 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28  = source.Remove(
6380: 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  n, 1);..        
6390: 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d  }..        else.
63a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
63b0: 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65        s = source
63c0: 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 6e 29  .Substring(0, n)
63d0: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
63e0: 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68      if (s.Length
63f0: 20 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20   > 1 && s[0] == 
6400: 71 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c  quot[0] && s[s.L
6410: 65 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b  ength - 1] == s[
6420: 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  0])..           
6430: 20 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67   s = s.Substring
6440: 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32  (1, s.Length - 2
6450: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
6460: 73 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e  source = source.
6470: 53 75 62 73 74 72 69 6e 67 28 6e 20 2b 20 31 29  Substring(n + 1)
6480: 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20  .Trim();..      
6490: 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68      if (s.Length
64a0: 20 3e 20 30 29 20 6c 73 2e 41 64 64 28 73 29 3b   > 0) ls.Add(s);
64b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 20 3d 20  ..          n = 
64c0: 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  0;..        }.. 
64d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 69 66       }..      if
64e0: 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20   (source.Length 
64f0: 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  > 0)..      {.. 
6500: 20 20 20 20 20 20 20 73 20 3d 20 73 6f 75 72 63         s = sourc
6510: 65 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20  e.Trim();..     
6520: 20 20 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20     if (s.Length 
6530: 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71  > 1 && s[0] == q
6540: 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65  uot[0] && s[s.Le
6550: 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30  ngth - 1] == s[0
6560: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 73 20  ])..          s 
6570: 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c  = s.Substring(1,
6580: 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d   s.Length - 2);.
6590: 0a 20 20 20 20 20 20 20 20 6c 73 2e 41 64 64 28  .        ls.Add(
65a0: 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  s);..      }....
65b0: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
65c0: 72 20 3d 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c  r = new string[l
65d0: 73 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20  s.Count];..     
65e0: 20 6c 73 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30   ls.CopyTo(ar, 0
65f0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  );....      retu
6600: 72 6e 20 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  rn ar;..    }...
6610: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
6620: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69  y>..    /// Spli
6630: 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64  ts the specified
6640: 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c   string into mul
6650: 74 69 70 6c 65 20 73 74 72 69 6e 67 73 20 62 61  tiple strings ba
6660: 73 65 64 20 6f 6e 20 61 20 73 65 70 61 72 61 74  sed on a separat
6670: 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20  or..    /// and 
6680: 72 65 74 75 72 6e 73 20 74 68 65 20 72 65 73 75  returns the resu
6690: 6c 74 20 61 73 20 61 6e 20 61 72 72 61 79 20 6f  lt as an array o
66a0: 66 20 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20  f strings...    
66b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
66c0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
66d0: 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20  ame="value">..  
66e0: 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67    /// The string
66f0: 20 74 6f 20 73 70 6c 69 74 20 69 6e 74 6f 20 70   to split into p
6700: 69 65 63 65 73 20 62 61 73 65 64 20 6f 6e 20 74  ieces based on t
6710: 68 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61  he separator cha
6720: 72 61 63 74 65 72 2e 20 20 49 66 0d 0a 20 20 20  racter.  If..   
6730: 20 2f 2f 2f 20 74 68 69 73 20 73 74 72 69 6e 67   /// this string
6740: 20 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77   is null, null w
6750: 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65  ill always be re
6760: 74 75 72 6e 65 64 2e 20 20 49 66 20 74 68 69 73  turned.  If this
6770: 20 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20 20   string is..    
6780: 2f 2f 2f 20 65 6d 70 74 79 2c 20 61 6e 20 61 72  /// empty, an ar
6790: 72 61 79 20 6f 66 20 7a 65 72 6f 20 73 74 72 69  ray of zero stri
67a0: 6e 67 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  ngs will always 
67b0: 62 65 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  be returned...  
67c0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
67d0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
67e0: 61 6d 65 3d 22 73 65 70 61 72 61 74 6f 72 22 3e  ame="separator">
67f0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 68  ..    /// The ch
6800: 61 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20  aracter used to 
6810: 64 69 76 69 64 65 20 74 68 65 20 6f 72 69 67 69  divide the origi
6820: 6e 61 6c 20 73 74 72 69 6e 67 20 69 6e 74 6f 20  nal string into 
6830: 73 75 62 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20  sub-strings...  
6840: 20 20 2f 2f 2f 20 54 68 69 73 20 63 68 61 72 61    /// This chara
6850: 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 61  cter cannot be a
6860: 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20   backslash or a 
6870: 64 6f 75 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74  double-quote; ot
6880: 68 65 72 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20  herwise, no..   
6890: 20 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62   /// work will b
68a0: 65 20 70 65 72 66 6f 72 6d 65 64 20 61 6e 64 20  e performed and 
68b0: 6e 75 6c 6c 20 77 69 6c 6c 20 62 65 20 72 65 74  null will be ret
68c0: 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  urned...    /// 
68d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
68e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b  / <param name="k
68f0: 65 65 70 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20  eepQuote">..    
6900: 2f 2f 2f 20 49 66 20 74 68 69 73 20 70 61 72 61  /// If this para
6910: 6d 65 74 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72  meter is non-zer
6920: 6f 2c 20 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75  o, all double-qu
6930: 6f 74 65 20 63 68 61 72 61 63 74 65 72 73 20 77  ote characters w
6940: 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20  ill be..    /// 
6950: 72 65 74 61 69 6e 65 64 20 69 6e 20 74 68 65 20  retained in the 
6960: 72 65 74 75 72 6e 65 64 20 6c 69 73 74 20 6f 66  returned list of
6970: 20 73 74 72 69 6e 67 73 3b 20 6f 74 68 65 72 77   strings; otherw
6980: 69 73 65 2c 20 74 68 65 79 20 77 69 6c 6c 20 62  ise, they will b
6990: 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70  e..    /// dropp
69a0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ed...    /// </p
69b0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
69c0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f  param name="erro
69d0: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f  r">..    /// Upo
69e0: 6e 20 66 61 69 6c 75 72 65 2c 20 74 68 69 73 20  n failure, this 
69f0: 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 62  parameter will b
6a00: 65 20 6d 6f 64 69 66 69 65 64 20 74 6f 20 63 6f  e modified to co
6a10: 6e 74 61 69 6e 20 61 6e 20 61 70 70 72 6f 70 72  ntain an appropr
6a20: 69 61 74 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72  iate..    /// er
6a30: 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20  ror message...  
6a40: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
6a50: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
6a60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e  >..    /// The n
6a70: 65 77 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  ew array of stri
6a80: 6e 67 73 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74  ngs or null if t
6a90: 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20  he input string 
6aa0: 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65  is null -OR- the
6ab0: 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 70 61 72 61  ..    /// separa
6ac0: 74 6f 72 20 63 68 61 72 61 63 74 65 72 20 69 73  tor character is
6ad0: 20 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20   a backslash or 
6ae0: 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d  a double-quote -
6af0: 4f 52 2d 20 74 68 65 20 73 74 72 69 6e 67 0d 0a  OR- the string..
6b00: 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73      /// contains
6b10: 20 61 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 62   an unbalanced b
6b20: 61 63 6b 73 6c 61 73 68 20 6f 72 20 64 6f 75 62  ackslash or doub
6b30: 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74  le-quote charact
6b40: 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  er...    /// </r
6b50: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
6b60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 73 74 72  ernal static str
6b70: 69 6e 67 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d  ing[] NewSplit(.
6b80: 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20  .        string 
6b90: 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  value,..        
6ba0: 63 68 61 72 20 73 65 70 61 72 61 74 6f 72 2c 0d  char separator,.
6bb0: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65  .        bool ke
6bc0: 65 70 51 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20  epQuote,..      
6bd0: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
6be0: 6f 72 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  or..        ).. 
6bf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f     {..        co
6c00: 6e 73 74 20 63 68 61 72 20 45 73 63 61 70 65 43  nst char EscapeC
6c10: 68 61 72 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20  har = '\\';..   
6c20: 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20       const char 
6c30: 51 75 6f 74 65 43 68 61 72 20 3d 20 27 5c 22 27  QuoteChar = '\"'
6c40: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  ;....        //.
6c50: 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  .        // NOTE
6c60: 3a 20 49 74 20 69 73 20 69 6c 6c 65 67 61 6c 20  : It is illegal 
6c70: 66 6f 72 20 74 68 65 20 73 65 70 61 72 61 74 6f  for the separato
6c80: 72 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62  r character to b
6c90: 65 20 65 69 74 68 65 72 20 61 0d 0a 20 20 20 20  e either a..    
6ca0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 61 63      //       bac
6cb0: 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62  kslash or a doub
6cc0: 6c 65 2d 71 75 6f 74 65 20 62 65 63 61 75 73 65  le-quote because
6cd0: 20 62 6f 74 68 20 6f 66 20 74 68 6f 73 65 20 63   both of those c
6ce0: 68 61 72 61 63 74 65 72 73 0d 0a 20 20 20 20 20  haracters..     
6cf0: 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72 65 20     //       are 
6d00: 75 73 65 64 20 66 6f 72 20 65 73 63 61 70 69 6e  used for escapin
6d10: 67 20 6f 74 68 65 72 20 63 68 61 72 61 63 74 65  g other characte
6d20: 72 73 20 28 65 2e 67 2e 20 74 68 65 20 73 65 70  rs (e.g. the sep
6d30: 61 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20  arator..        
6d40: 2f 2f 20 20 20 20 20 20 20 63 68 61 72 61 63 74  //       charact
6d50: 65 72 29 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er)...        //
6d60: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 73  ..        if ((s
6d70: 65 70 61 72 61 74 6f 72 20 3d 3d 20 45 73 63 61  eparator == Esca
6d80: 70 65 43 68 61 72 29 20 7c 7c 20 28 73 65 70 61  peChar) || (sepa
6d90: 72 61 74 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68  rator == QuoteCh
6da0: 61 72 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ar))..        {.
6db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72  .            err
6dc0: 6f 72 20 3d 20 22 73 65 70 61 72 61 74 6f 72 20  or = "separator 
6dd0: 63 68 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74  character cannot
6de0: 20 62 65 20 74 68 65 20 65 73 63 61 70 65 20 6f   be the escape o
6df0: 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  r quote characte
6e00: 72 73 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rs";..          
6e10: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
6e20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
6e30: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
6e40: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
6e50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6e60: 65 72 72 6f 72 20 3d 20 22 73 74 72 69 6e 67 20  error = "string 
6e70: 76 61 6c 75 65 20 74 6f 20 73 70 6c 69 74 20 63  value to split c
6e80: 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d  annot be null";.
6e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
6ea0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
6eb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6ec0: 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c  int length = val
6ed0: 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  ue.Length;....  
6ee0: 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68        if (length
6ef0: 20 3d 3d 20 30 29 0d 0a 20 20 20 20 20 20 20 20   == 0)..        
6f00: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 73      return new s
6f10: 74 72 69 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20  tring[0];....   
6f20: 20 20 20 20 20 4c 69 73 74 3c 73 74 72 69 6e 67       List<string
6f30: 3e 20 6c 69 73 74 20 3d 20 6e 65 77 20 4c 69 73  > list = new Lis
6f40: 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20  t<string>();..  
6f50: 20 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c        StringBuil
6f60: 64 65 72 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65  der element = ne
6f70: 77 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28  w StringBuilder(
6f80: 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  );..        int 
6f90: 69 6e 64 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20  index = 0;..    
6fa0: 20 20 20 20 62 6f 6f 6c 20 65 73 63 61 70 65 20      bool escape 
6fb0: 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  = false;..      
6fc0: 20 20 62 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66    bool quote = f
6fd0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
6fe0: 20 77 68 69 6c 65 20 28 69 6e 64 65 78 20 3c 20   while (index < 
6ff0: 6c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20  length)..       
7000: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7010: 63 68 61 72 20 63 68 61 72 61 63 74 65 72 20 3d  char character =
7020: 20 76 61 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b   value[index++];
7030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7040: 69 66 20 28 65 73 63 61 70 65 29 0d 0a 20 20 20  if (escape)..   
7050: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7060: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
7070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7080: 2f 2f 20 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f  // HACK: Only co
7090: 6e 73 69 64 65 72 20 74 68 65 20 65 73 63 61 70  nsider the escap
70a0: 65 20 63 68 61 72 61 63 74 65 72 20 74 6f 20 62  e character to b
70b0: 65 20 61 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20  e an actual..   
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
70d0: 20 20 20 20 20 20 22 65 73 63 61 70 65 22 20 69        "escape" i
70e0: 66 20 69 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64  f it is followed
70f0: 20 62 79 20 61 20 72 65 73 65 72 76 65 64 20 63   by a reserved c
7100: 68 61 72 61 63 74 65 72 3b 0d 0a 20 20 20 20 20  haracter;..     
7110: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
7120: 20 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 65      otherwise, e
7130: 6d 69 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  mit the original
7140: 20 65 73 63 61 70 65 20 63 68 61 72 61 63 74 65   escape characte
7150: 72 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20  r and..         
7160: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7170: 74 68 65 20 63 75 72 72 65 6e 74 20 63 68 61 72  the current char
7180: 61 63 74 65 72 20 69 6e 20 61 6e 20 65 66 66 6f  acter in an effo
7190: 72 74 20 74 6f 20 68 65 6c 70 20 70 72 65 73 65  rt to help prese
71a0: 72 76 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rve..           
71b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
71c0: 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e  e original strin
71d0: 67 20 63 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20  g content...    
71e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
71f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7200: 69 66 20 28 28 63 68 61 72 61 63 74 65 72 20 21  if ((character !
7210: 3d 20 45 73 63 61 70 65 43 68 61 72 29 20 26 26  = EscapeChar) &&
7220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7230: 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65 72        (character
7240: 20 21 3d 20 51 75 6f 74 65 43 68 61 72 29 20 26   != QuoteChar) &
7250: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
7260: 20 20 20 20 20 20 20 28 63 68 61 72 61 63 74 65         (characte
7270: 72 20 21 3d 20 73 65 70 61 72 61 74 6f 72 29 29  r != separator))
7280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7290: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
72a0: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
72b0: 2e 41 70 70 65 6e 64 28 45 73 63 61 70 65 43 68  .Append(EscapeCh
72c0: 61 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ar);..          
72d0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
72e0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65             eleme
72f0: 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63  nt.Append(charac
7300: 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ter);..         
7310: 20 20 20 20 20 20 20 65 73 63 61 70 65 20 3d 20         escape = 
7320: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
7330: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
7340: 20 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72     else if (char
7350: 61 63 74 65 72 20 3d 3d 20 45 73 63 61 70 65 43  acter == EscapeC
7360: 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20  har)..          
7370: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7380: 20 20 20 20 20 65 73 63 61 70 65 20 3d 20 74 72       escape = tr
7390: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
73a0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
73b0: 65 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74  else if (charact
73c0: 65 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29  er == QuoteChar)
73d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
73e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
73f0: 20 69 66 20 28 6b 65 65 70 51 75 6f 74 65 29 0d   if (keepQuote).
7400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7410: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
7420: 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d  end(character);.
7430: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7440: 20 20 20 71 75 6f 74 65 20 3d 20 21 71 75 6f 74     quote = !quot
7450: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
7460: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
7470: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
7480: 72 20 3d 3d 20 73 65 70 61 72 61 74 6f 72 29 0d  r == separator).
7490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
74a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74b0: 69 66 20 28 71 75 6f 74 65 29 0d 0a 20 20 20 20  if (quote)..    
74c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
74d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74e0: 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e     element.Appen
74f0: 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 20  d(character);.. 
7500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7510: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7520: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
7530: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
7550: 69 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e  ist.Add(element.
7560: 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
7570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7580: 20 20 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68    element.Length
7590: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   = 0;..         
75a0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
75b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
75c0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
75d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
75e0: 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e            elemen
75f0: 74 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74  t.Append(charact
7600: 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  er);..          
7610: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
7620: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
7630: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
7640: 6e 20 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63  n unbalanced esc
7650: 61 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61  ape or quote cha
7660: 72 61 63 74 65 72 20 69 6e 20 74 68 65 20 73 74  racter in the st
7670: 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 20 20 20  ring is..       
7680: 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 73 69 64   //       consid
7690: 65 72 65 64 20 74 6f 20 62 65 20 61 20 66 61 74  ered to be a fat
76a0: 61 6c 20 65 72 72 6f 72 3b 20 74 68 65 72 65 66  al error; theref
76b0: 6f 72 65 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c  ore, return null
76c0: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
76d0: 20 20 20 20 20 20 20 69 66 20 28 65 73 63 61 70         if (escap
76e0: 65 20 7c 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20  e || quote)..   
76f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7700: 20 20 20 20 65 72 72 6f 72 20 3d 20 22 75 6e 62      error = "unb
7710: 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f  alanced escape o
7720: 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65  r quote characte
7730: 72 20 66 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20  r found";..     
7740: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
7750: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
7760: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 6c  ..        if (el
7770: 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30  ement.Length > 0
7780: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  )..            l
7790: 69 73 74 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e  ist.Add(element.
77a0: 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a  ToString());....
77b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
77c0: 69 73 74 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a  ist.ToArray();..
77d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
77e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
77f0: 2f 2f 2f 20 51 75 65 72 69 65 73 20 61 6e 64 20  /// Queries and 
7800: 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69  returns the stri
7810: 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  ng representatio
7820: 6e 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c  n for an object,
7830: 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
7840: 2f 2f 2f 20 73 70 65 63 69 66 69 65 64 20 28 6f  /// specified (o
7850: 72 20 63 75 72 72 65 6e 74 29 20 66 6f 72 6d 61  r current) forma
7860: 74 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20  t provider...   
7870: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
7880: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7890: 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20  name="obj">..   
78a0: 20 2f 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20   /// The object 
78b0: 69 6e 73 74 61 6e 63 65 20 74 6f 20 72 65 74 75  instance to retu
78c0: 72 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65  rn the string re
78d0: 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72  presentation for
78e0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
78f0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
7900: 72 61 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64  ram name="provid
7910: 65 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  er">..    /// Th
7920: 65 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65  e format provide
7930: 72 20 74 6f 20 75 73 65 20 2d 4f 52 2d 20 6e 75  r to use -OR- nu
7940: 6c 6c 20 69 66 20 74 68 65 20 63 75 72 72 65 6e  ll if the curren
7950: 74 20 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65  t format provide
7960: 72 20 66 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 74  r for..    /// t
7970: 68 65 20 74 68 72 65 61 64 20 73 68 6f 75 6c 64  he thread should
7980: 20 62 65 20 75 73 65 64 20 69 6e 73 74 65 61 64   be used instead
7990: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
79a0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
79b0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
79c0: 54 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65  The string repre
79d0: 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 74 68  sentation for th
79e0: 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63  e object instanc
79f0: 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20 74  e -OR- null if t
7a00: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 6f 62 6a 65  he..    /// obje
7a10: 63 74 20 69 6e 73 74 61 6e 63 65 20 69 73 20 61  ct instance is a
7a20: 6c 73 6f 20 6e 75 6c 6c 2e 0d 0a 20 20 20 20 2f  lso null...    /
7a30: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
7a40: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
7a50: 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67   string ToString
7a60: 57 69 74 68 50 72 6f 76 69 64 65 72 28 0d 0a 20  WithProvider(.. 
7a70: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62         object ob
7a80: 6a 2c 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72  j,..        IFor
7a90: 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76  matProvider prov
7aa0: 69 64 65 72 0d 0a 20 20 20 20 20 20 20 20 29 0d  ider..        ).
7ab0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
7ac0: 69 66 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29  if (obj == null)
7ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
7ae0: 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f 2a 20 6e 75  turn null; /* nu
7af0: 6c 6c 20 2d 2d 3e 20 6e 75 6c 6c 20 2a 2f 0d 0a  ll --> null */..
7b00: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62  ..        if (ob
7b10: 6a 20 69 73 20 73 74 72 69 6e 67 29 0d 0a 20 20  j is string)..  
7b20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
7b30: 20 28 73 74 72 69 6e 67 29 6f 62 6a 3b 20 2f 2a   (string)obj; /*
7b40: 20 69 64 65 6e 74 69 74 79 20 2a 2f 0d 0a 0d 0a   identity */....
7b50: 20 20 20 20 20 20 20 20 49 43 6f 6e 76 65 72 74          IConvert
7b60: 69 62 6c 65 20 63 6f 6e 76 65 72 74 69 62 6c 65  ible convertible
7b70: 20 3d 20 6f 62 6a 20 61 73 20 49 43 6f 6e 76 65   = obj as IConve
7b80: 72 74 69 62 6c 65 3b 0d 0a 0d 0a 20 20 20 20 20  rtible;....     
7b90: 20 20 20 69 66 20 28 63 6f 6e 76 65 72 74 69 62     if (convertib
7ba0: 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  le != null)..   
7bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
7bc0: 63 6f 6e 76 65 72 74 69 62 6c 65 2e 54 6f 53 74  convertible.ToSt
7bd0: 72 69 6e 67 28 70 72 6f 76 69 64 65 72 29 3b 0d  ring(provider);.
7be0: 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ...        retur
7bf0: 6e 20 6f 62 6a 2e 54 6f 53 74 72 69 6e 67 28 29  n obj.ToString()
7c00: 3b 20 2f 2a 20 6e 6f 74 20 49 43 6f 6e 76 65 72  ; /* not IConver
7c10: 74 69 62 6c 65 20 2a 2f 0d 0a 20 20 20 20 7d 0d  tible */..    }.
7c20: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
7c30: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 74  ary>..    /// At
7c40: 74 65 6d 70 74 73 20 74 6f 20 63 6f 6e 76 65 72  tempts to conver
7c50: 74 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f  t an arbitrary o
7c60: 62 6a 65 63 74 20 74 6f 20 74 68 65 20 42 6f 6f  bject to the Boo
7c70: 6c 65 61 6e 20 64 61 74 61 20 74 79 70 65 2e 0d  lean data type..
7c80: 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 6f 62  .    /// Null ob
7c90: 6a 65 63 74 20 76 61 6c 75 65 73 20 61 72 65 20  ject values are 
7ca0: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 66 61 6c  converted to fal
7cb0: 73 65 2e 20 20 54 68 72 6f 77 73 20 61 6e 20 65  se.  Throws an e
7cc0: 78 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f  xception..    //
7cd0: 2f 20 75 70 6f 6e 20 66 61 69 6c 75 72 65 2e 0d  / upon failure..
7ce0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
7cf0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
7d00: 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d  ram name="obj">.
7d10: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a  .    /// The obj
7d20: 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e  ect value to con
7d30: 76 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  vert...    /// <
7d40: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
7d50: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
7d60: 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f  ovider">..    //
7d70: 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f  / The format pro
7d80: 76 69 64 65 72 20 74 6f 20 75 73 65 2e 0d 0a 20  vider to use... 
7d90: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
7da0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7db0: 6e 61 6d 65 3d 22 76 69 61 46 72 61 6d 65 77 6f  name="viaFramewo
7dc0: 72 6b 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66  rk">..    /// If
7dd0: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 20 73 74 72   non-zero, a str
7de0: 69 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 20 62  ing value will b
7df0: 65 20 63 6f 6e 76 65 72 74 65 64 20 75 73 69 6e  e converted usin
7e00: 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  g the..    /// <
7e10: 73 65 65 20 63 72 65 66 3d 22 43 6f 6e 76 65 72  see cref="Conver
7e20: 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 4f 62 6a 65  t.ToBoolean(Obje
7e30: 63 74 2c 20 49 46 6f 72 6d 61 74 50 72 6f 76 69  ct, IFormatProvi
7e40: 64 65 72 29 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f  der)" />..    //
7e50: 2f 20 6d 65 74 68 6f 64 3b 20 6f 74 68 65 72 77  / method; otherw
7e60: 69 73 65 2c 20 74 68 65 20 3c 73 65 65 20 63 72  ise, the <see cr
7e70: 65 66 3d 22 54 6f 42 6f 6f 6c 65 61 6e 28 53 74  ef="ToBoolean(St
7e80: 72 69 6e 67 29 22 20 2f 3e 0d 0a 20 20 20 20 2f  ring)" />..    /
7e90: 2f 2f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62  // method will b
7ea0: 65 20 75 73 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  e used...    ///
7eb0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
7ec0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
7ed0: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72    /// The conver
7ee0: 74 65 64 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  ted boolean valu
7ef0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65  e...    /// </re
7f00: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
7f10: 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c  rnal static bool
7f20: 20 54 6f 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20   ToBoolean(..   
7f30: 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 2c       object obj,
7f40: 0d 0a 20 20 20 20 20 20 20 20 49 46 6f 72 6d 61  ..        IForma
7f50: 74 50 72 6f 76 69 64 65 72 20 70 72 6f 76 69 64  tProvider provid
7f60: 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f  er,..        boo
7f70: 6c 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 0d 0a  l viaFramework..
7f80: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
7f90: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62  ..        if (ob
7fa0: 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  j == null)..    
7fb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
7fc0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
7fd0: 20 54 79 70 65 43 6f 64 65 20 74 79 70 65 43 6f   TypeCode typeCo
7fe0: 64 65 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70  de = Type.GetTyp
7ff0: 65 43 6f 64 65 28 6f 62 6a 2e 47 65 74 54 79 70  eCode(obj.GetTyp
8000: 65 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  e());....       
8010: 20 73 77 69 74 63 68 20 28 74 79 70 65 43 6f 64   switch (typeCod
8020: 65 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  e)..        {.. 
8030: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
8040: 54 79 70 65 43 6f 64 65 2e 45 6d 70 74 79 3a 0d  TypeCode.Empty:.
8050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
8060: 65 20 54 79 70 65 43 6f 64 65 2e 44 42 4e 75 6c  e TypeCode.DBNul
8070: 6c 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l:..            
8080: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
8090: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
80a0: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 42 6f 6f  ase TypeCode.Boo
80b0: 6c 65 61 6e 3a 0d 0a 20 20 20 20 20 20 20 20 20  lean:..         
80c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 62         return (b
80d0: 6f 6f 6c 29 6f 62 6a 3b 0d 0a 20 20 20 20 20 20  ool)obj;..      
80e0: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
80f0: 6f 64 65 2e 43 68 61 72 3a 0d 0a 20 20 20 20 20  ode.Char:..     
8100: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8110: 6e 20 28 28 63 68 61 72 29 6f 62 6a 29 20 21 3d  n ((char)obj) !=
8120: 20 28 63 68 61 72 29 30 20 3f 20 74 72 75 65 20   (char)0 ? true 
8130: 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  : false;..      
8140: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
8150: 6f 64 65 2e 53 42 79 74 65 3a 0d 0a 20 20 20 20  ode.SByte:..    
8160: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8170: 72 6e 20 28 28 73 62 79 74 65 29 6f 62 6a 29 20  rn ((sbyte)obj) 
8180: 21 3d 20 28 73 62 79 74 65 29 30 20 3f 20 74 72  != (sbyte)0 ? tr
8190: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
81a0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
81b0: 70 65 43 6f 64 65 2e 42 79 74 65 3a 0d 0a 20 20  peCode.Byte:..  
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
81d0: 74 75 72 6e 20 28 28 62 79 74 65 29 6f 62 6a 29  turn ((byte)obj)
81e0: 20 21 3d 20 28 62 79 74 65 29 30 20 3f 20 74 72   != (byte)0 ? tr
81f0: 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20  ue : false;..   
8200: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
8210: 70 65 43 6f 64 65 2e 49 6e 74 31 36 3a 0d 0a 20  peCode.Int16:.. 
8220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8230: 65 74 75 72 6e 20 28 28 73 68 6f 72 74 29 6f 62  eturn ((short)ob
8240: 6a 29 20 21 3d 20 28 73 68 6f 72 74 29 30 20 3f  j) != (short)0 ?
8250: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
8260: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
8270: 20 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 31 36   TypeCode.UInt16
8280: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
8290: 20 20 20 72 65 74 75 72 6e 20 28 28 75 73 68 6f     return ((usho
82a0: 72 74 29 6f 62 6a 29 20 21 3d 20 28 75 73 68 6f  rt)obj) != (usho
82b0: 72 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  rt)0 ? true : fa
82c0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
82d0: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
82e0: 49 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20  Int32:..        
82f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
8300: 28 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 69 6e  (int)obj) != (in
8310: 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  t)0 ? true : fal
8320: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
8330: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55   case TypeCode.U
8340: 49 6e 74 33 32 3a 0d 0a 20 20 20 20 20 20 20 20  Int32:..        
8350: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
8360: 28 75 69 6e 74 29 6f 62 6a 29 20 21 3d 20 28 75  (uint)obj) != (u
8370: 69 6e 74 29 30 20 3f 20 74 72 75 65 20 3a 20 66  int)0 ? true : f
8380: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
8390: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
83a0: 2e 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20 20 20  .Int64:..       
83b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
83c0: 28 28 6c 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28  ((long)obj) != (
83d0: 6c 6f 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20  long)0 ? true : 
83e0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
83f0: 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64      case TypeCod
8400: 65 2e 55 49 6e 74 36 34 3a 0d 0a 20 20 20 20 20  e.UInt64:..     
8410: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8420: 6e 20 28 28 75 6c 6f 6e 67 29 6f 62 6a 29 20 21  n ((ulong)obj) !
8430: 3d 20 28 75 6c 6f 6e 67 29 30 20 3f 20 74 72 75  = (ulong)0 ? tru
8440: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
8450: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
8460: 65 43 6f 64 65 2e 53 69 6e 67 6c 65 3a 0d 0a 20  eCode.Single:.. 
8470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8480: 65 74 75 72 6e 20 28 28 66 6c 6f 61 74 29 6f 62  eturn ((float)ob
8490: 6a 29 20 21 3d 20 28 66 6c 6f 61 74 29 30 2e 30  j) != (float)0.0
84a0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : 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 44 6f 75 62  se TypeCode.Doub
84d0: 6c 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le:..           
84e0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 64 6f       return ((do
84f0: 75 62 6c 65 29 6f 62 6a 29 20 21 3d 20 28 64 6f  uble)obj) != (do
8500: 75 62 6c 65 29 30 2e 30 20 3f 20 74 72 75 65 20  uble)0.0 ? true 
8510: 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  : false;..      
8520: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
8530: 6f 64 65 2e 44 65 63 69 6d 61 6c 3a 0d 0a 20 20  ode.Decimal:..  
8540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8550: 74 75 72 6e 20 28 28 64 65 63 69 6d 61 6c 29 6f  turn ((decimal)o
8560: 62 6a 29 20 21 3d 20 44 65 63 69 6d 61 6c 2e 5a  bj) != Decimal.Z
8570: 65 72 6f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c  ero ? true : fal
8580: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
8590: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53   case TypeCode.S
85a0: 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20 20 20 20  tring:..        
85b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
85c0: 69 61 46 72 61 6d 65 77 6f 72 6b 20 3f 0d 0a 20  iaFramework ?.. 
85d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85e0: 20 20 20 43 6f 6e 76 65 72 74 2e 54 6f 42 6f 6f     Convert.ToBoo
85f0: 6c 65 61 6e 28 6f 62 6a 2c 20 70 72 6f 76 69 64  lean(obj, provid
8600: 65 72 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20  er) :..         
8610: 20 20 20 20 20 20 20 20 20 20 20 54 6f 42 6f 6f             ToBoo
8620: 6c 65 61 6e 28 54 6f 53 74 72 69 6e 67 57 69 74  lean(ToStringWit
8630: 68 50 72 6f 76 69 64 65 72 28 6f 62 6a 2c 20 70  hProvider(obj, p
8640: 72 6f 76 69 64 65 72 29 29 3b 0d 0a 20 20 20 20  rovider));..    
8650: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a          default:
8660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8670: 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69    throw new SQLi
8680: 74 65 45 78 63 65 70 74 69 6f 6e 28 53 74 72 69  teException(Stri
8690: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
86a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86b0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72  CultureInfo.Curr
86c0: 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20  entCulture,..   
86d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
86e0: 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65 72 74   "Cannot convert
86f0: 20 74 79 70 65 20 7b 30 7d 20 74 6f 20 62 6f 6f   type {0} to boo
8700: 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20  lean",..        
8710: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
8720: 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  Code));..       
8730: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
8740: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8750: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 20      /// Convert 
8760: 61 20 76 61 6c 75 65 20 74 6f 20 74 72 75 65 20  a value to true 
8770: 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20 20 2f  or false...    /
8780: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
8790: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
87a0: 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20 73 74  me="source">A st
87b0: 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72 20 72  ring or number r
87c0: 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65  epresenting true
87d0: 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d   or false</param
87e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
87f0: 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  rns></returns>..
8800: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
8810: 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e  c bool ToBoolean
8820: 28 6f 62 6a 65 63 74 20 73 6f 75 72 63 65 29 0d  (object source).
8830: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
8840: 20 28 73 6f 75 72 63 65 20 69 73 20 62 6f 6f 6c   (source is bool
8850: 29 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 73  ) return (bool)s
8860: 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  ource;....      
8870: 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65 61 6e  return ToBoolean
8880: 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f  (ToStringWithPro
8890: 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20  vider(..        
88a0: 20 20 73 6f 75 72 63 65 2c 20 43 75 6c 74 75 72    source, Cultur
88b0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
88c0: 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20 20 7d  ulture));..    }
88d0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
88e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
88f0: 6f 6e 76 65 72 74 20 61 20 73 74 72 69 6e 67 20  onvert a string 
8900: 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65  to true or false
8910: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
8920: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
8930: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72  param name="sour
8940: 63 65 22 3e 41 20 73 74 72 69 6e 67 20 72 65 70  ce">A string rep
8950: 72 65 73 65 6e 74 69 6e 67 20 74 72 75 65 20 6f  resenting true o
8960: 72 20 66 61 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d  r false</param>.
8970: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
8980: 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  s></returns>..  
8990: 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
89a0: 0a 20 20 20 20 2f 2f 2f 20 22 79 65 73 22 2c 20  .    /// "yes", 
89b0: 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20  "no", "y", "n", 
89c0: 22 30 22 2c 20 22 31 22 2c 20 22 6f 6e 22 2c 20  "0", "1", "on", 
89d0: 22 6f 66 66 22 20 61 73 20 77 65 6c 6c 20 61 73  "off" as well as
89e0: 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74   Boolean.FalseSt
89f0: 72 69 6e 67 20 61 6e 64 20 42 6f 6f 6c 65 61 6e  ring and Boolean
8a00: 2e 54 72 75 65 53 74 72 69 6e 67 20 77 69 6c 6c  .TrueString will
8a10: 20 61 6c 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f   all be..    ///
8a20: 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20   converted to a 
8a30: 70 72 6f 70 65 72 20 62 6f 6f 6c 65 61 6e 20 76  proper boolean v
8a40: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
8a50: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 70  /remarks>..    p
8a60: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
8a70: 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74 72 69  l ToBoolean(stri
8a80: 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20  ng source)..    
8a90: 7b 0d 0a 20 20 20 20 20 20 69 66 20 28 53 74 72  {..      if (Str
8aa0: 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72  ing.Compare(sour
8ab0: 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72  ce, bool.TrueStr
8ac0: 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61  ing, StringCompa
8ad0: 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
8ae0: 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72  oreCase) == 0) r
8af0: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
8b00: 20 20 20 65 6c 73 65 20 69 66 20 28 53 74 72 69     else if (Stri
8b10: 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f 75 72 63  ng.Compare(sourc
8b20: 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65 53 74 72  e, bool.FalseStr
8b30: 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61  ing, StringCompa
8b40: 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e  rison.OrdinalIgn
8b50: 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20 72  oreCase) == 0) r
8b60: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
8b70: 20 20 20 20 20 20 73 77 69 74 63 68 28 73 6f 75        switch(sou
8b80: 72 63 65 2e 54 6f 4c 6f 77 65 72 28 43 75 6c 74  rce.ToLower(Cult
8b90: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  ureInfo.Invarian
8ba0: 74 43 75 6c 74 75 72 65 29 29 0d 0a 20 20 20 20  tCulture))..    
8bb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73    {..        cas
8bc0: 65 20 22 79 65 73 22 3a 0d 0a 20 20 20 20 20 20  e "yes":..      
8bd0: 20 20 63 61 73 65 20 22 79 22 3a 0d 0a 20 20 20    case "y":..   
8be0: 20 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d 0a       case "1":..
8bf0: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 6e          case "on
8c00: 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ":..          re
8c10: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
8c20: 20 20 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a      case "no":..
8c30: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 22          case "n"
8c40: 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  :..        case 
8c50: 22 30 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61  "0":..        ca
8c60: 73 65 20 22 6f 66 66 22 3a 0d 0a 20 20 20 20 20  se "off":..     
8c70: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
8c80: 65 3b 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61  e;..        defa
8c90: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
8ca0: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
8cb0: 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73 6f 75  ntException("sou
8cc0: 72 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  rce");..      }.
8cd0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72  .    }....    #r
8ce0: 65 67 69 6f 6e 20 54 79 70 65 20 43 6f 6e 76 65  egion Type Conve
8cf0: 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20  rsions..    /// 
8d00: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
8d10: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 53 51  // Converts a SQ
8d20: 4c 69 74 65 54 79 70 65 20 74 6f 20 61 20 2e 4e  LiteType to a .N
8d30: 45 54 20 54 79 70 65 20 6f 62 6a 65 63 74 0d 0a  ET Type object..
8d40: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
8d50: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
8d60: 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54 68 65 20  am name="t">The 
8d70: 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 63 6f  SQLiteType to co
8d80: 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20  nvert</param>.. 
8d90: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
8da0: 52 65 74 75 72 6e 73 20 61 20 2e 4e 45 54 20 54  Returns a .NET T
8db0: 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72 65 74 75  ype object</retu
8dc0: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
8dd0: 61 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 53  al static Type S
8de0: 51 4c 69 74 65 54 79 70 65 54 6f 54 79 70 65 28  QLiteTypeToType(
8df0: 53 51 4c 69 74 65 54 79 70 65 20 74 29 0d 0a 20  SQLiteType t).. 
8e00: 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28     {..      if (
8e10: 74 2e 54 79 70 65 20 3d 3d 20 44 62 54 79 70 65  t.Type == DbType
8e20: 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20  .Object)..      
8e30: 20 20 72 65 74 75 72 6e 20 5f 61 66 66 69 6e 69    return _affini
8e40: 74 79 74 6f 74 79 70 65 5b 28 69 6e 74 29 74 2e  tytotype[(int)t.
8e50: 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20 20 20 20  Affinity];..    
8e60: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
8e70: 72 65 74 75 72 6e 20 53 51 4c 69 74 65 43 6f 6e  return SQLiteCon
8e80: 76 65 72 74 2e 44 62 54 79 70 65 54 6f 54 79 70  vert.DbTypeToTyp
8e90: 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20 20 20 20  e(t.Type);..    
8ea0: 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  }....    private
8eb0: 20 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f   static Type[] _
8ec0: 61 66 66 69 6e 69 74 79 74 6f 74 79 70 65 20 3d  affinitytotype =
8ed0: 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66   {..      typeof
8ee0: 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 55  (object),   // U
8ef0: 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 28 30 29  ninitialized (0)
8f00: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49  ..      typeof(I
8f10: 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74  nt64),    // Int
8f20: 36 34 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79  64 (1)..      ty
8f30: 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c 20 20 20  peof(Double),   
8f40: 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29 0d 0a 20  // Double (2).. 
8f50: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
8f60: 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78 74 20 28  ng),   // Text (
8f70: 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  3)..      typeof
8f80: 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42  (byte[]),   // B
8f90: 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20 20 20 74  lob (4)..      t
8fa0: 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20  ypeof(object),  
8fb0: 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d 0a 20 20   // Null (5)..  
8fc0: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
8fd0: 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d  ime), // DateTim
8fe0: 65 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79  e (10)..      ty
8ff0: 70 65 6f 66 28 6f 62 6a 65 63 74 29 20 20 20 20  peof(object)    
9000: 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a 20 20  // None (11)..  
9010: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20    };....    /// 
9020: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
9030: 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 69  // For a given i
9040: 6e 74 72 69 6e 73 69 63 20 74 79 70 65 2c 20 72  ntrinsic type, r
9050: 65 74 75 72 6e 20 61 20 44 62 54 79 70 65 0d 0a  eturn a DbType..
9060: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
9070: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
9080: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68  am name="typ">Th
9090: 65 20 6e 61 74 69 76 65 20 74 79 70 65 20 74 6f  e native type to
90a0: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
90b0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
90c0: 6e 73 3e 54 68 65 20 63 6f 72 72 65 73 70 6f 6e  ns>The correspon
90d0: 64 69 6e 67 20 28 63 6c 6f 73 65 73 74 20 6d 61  ding (closest ma
90e0: 74 63 68 29 20 44 62 54 79 70 65 3c 2f 72 65 74  tch) DbType</ret
90f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
9100: 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70  nal static DbTyp
9110: 65 20 54 79 70 65 54 6f 44 62 54 79 70 65 28 54  e TypeToDbType(T
9120: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
9130: 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20  .      TypeCode 
9140: 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70  tc = Type.GetTyp
9150: 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20  eCode(typ);..   
9160: 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70     if (tc == Typ
9170: 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20  eCode.Object).. 
9180: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9190: 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f  if (typ == typeo
91a0: 66 28 62 79 74 65 5b 5d 29 29 20 72 65 74 75 72  f(byte[])) retur
91b0: 6e 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 3b  n DbType.Binary;
91c0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  ..        if (ty
91d0: 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64  p == typeof(Guid
91e0: 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65  )) return DbType
91f0: 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20 20 20 20  .Guid;..        
9200: 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e 53 74  return DbType.St
9210: 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  ring;..      }..
9220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79        return _ty
9230: 70 65 74 6f 64 62 74 79 70 65 5b 28 69 6e 74 29  petodbtype[(int)
9240: 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  tc];..    }.... 
9250: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
9260: 63 20 44 62 54 79 70 65 5b 5d 20 5f 74 79 70 65  c DbType[] _type
9270: 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a 20 20  todbtype = {..  
9280: 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63      DbType.Objec
9290: 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 30  t,   // Empty (0
92a0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
92b0: 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f 62 6a  Binary,   // Obj
92c0: 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20 44  ect (1)..      D
92d0: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
92e0: 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20  // DBNull (2).. 
92f0: 20 20 20 20 20 44 62 54 79 70 65 2e 42 6f 6f 6c       DbType.Bool
9300: 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e  ean,  // Boolean
9310: 20 28 33 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (3)..      DbTy
9320: 70 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20  pe.SByte,    // 
9330: 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20  Char (4)..      
9340: 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20  DbType.SByte,   
9350: 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20   // SByte (5).. 
9360: 20 20 20 20 20 44 62 54 79 70 65 2e 42 79 74 65       DbType.Byte
9370: 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36  ,     // Byte (6
9380: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
9390: 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49 6e 74  Int16,    // Int
93a0: 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20 44 62  16 (7)..      Db
93b0: 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 20 20 2f  Type.UInt16,   /
93c0: 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 20  / UInt16 (8)..  
93d0: 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33 32      DbType.Int32
93e0: 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 39  ,    // Int32 (9
93f0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
9400: 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55 49 6e  UInt32,   // UIn
9410: 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20  t32 (10)..      
9420: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 20 20  DbType.Int64,   
9430: 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a   // Int64 (11)..
9440: 20 20 20 20 20 20 44 62 54 79 70 65 2e 55 49 6e        DbType.UIn
9450: 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74 36 34  t64,   // UInt64
9460: 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44 62 54   (12)..      DbT
9470: 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20 2f 2f  ype.Single,   //
9480: 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20   Single (13)..  
9490: 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75 62 6c      DbType.Doubl
94a0: 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28  e,   // Double (
94b0: 31 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70  14)..      DbTyp
94c0: 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f 20 44  e.Decimal,  // D
94d0: 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20  ecimal (15)..   
94e0: 20 20 20 44 62 54 79 70 65 2e 44 61 74 65 54 69     DbType.DateTi
94f0: 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20  me, // DateTime 
9500: 28 31 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (16)..      DbTy
9510: 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20  pe.Object,   // 
9520: 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20 44  ?? (17)..      D
9530: 62 54 79 70 65 2e 53 74 72 69 6e 67 20 20 20 20  bType.String    
9540: 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a  // String (18)..
9550: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
9560: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
9570: 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 65   /// Returns the
9580: 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72 20   ColumnSize for 
9590: 74 68 65 20 67 69 76 65 6e 20 44 62 54 79 70 65  the given DbType
95a0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
95b0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
95c0: 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e  aram name="typ">
95d0: 54 68 65 20 44 62 54 79 70 65 20 74 6f 20 67 65  The DbType to ge
95e0: 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f 70  t the size of</p
95f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
9600: 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e  returns></return
9610: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
9620: 20 73 74 61 74 69 63 20 69 6e 74 20 44 62 54 79   static int DbTy
9630: 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28 44  peToColumnSize(D
9640: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
9650: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
9660: 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e 73  _dbtypetocolumns
9670: 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ize[(int)typ];..
9680: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
9690: 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 5b  vate static int[
96a0: 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d  ] _dbtypetocolum
96b0: 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20 20  nsize = {..     
96c0: 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f   int.MaxValue, /
96d0: 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29  / AnsiString (0)
96e0: 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56  ..      int.MaxV
96f0: 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20  alue, // Binary 
9700: 28 31 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20  (1)..      1,   
9710: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65           // Byte
9720: 20 28 32 29 0d 0a 20 20 20 20 20 20 31 2c 20 20   (2)..      1,  
9730: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 6f 6f            // Boo
9740: 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20  lean (3)..      
9750: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
9760: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
9770: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
9780: 20 20 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a     // Date (5)..
9790: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
97a0: 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 20      // DateTime 
97b0: 28 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  (6)..      8,   
97c0: 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69           // Deci
97d0: 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 38  mal (7)..      8
97e0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
97f0: 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20  Double (8)..    
9800: 20 20 31 36 2c 20 20 20 20 20 20 20 20 20 20 20    16,           
9810: 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20  // Guid (9)..   
9820: 20 20 20 32 2c 20 20 20 20 20 20 20 20 20 20 20     2,           
9830: 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a   // Int16 (10)..
9840: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
9850: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31      // Int32 (11
9860: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
9870: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20         // Int64 
9880: 28 31 32 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e  (12)..      int.
9890: 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a  MaxValue, // Obj
98a0: 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20  ect (13)..      
98b0: 31 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  1,            //
98c0: 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20   SByte (14)..   
98d0: 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20     4,           
98e0: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d   // Single (15).
98f0: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
9900: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28  lue, // String (
9910: 31 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20  16)..      8,   
9920: 20 20 20 20 20 20 20 20 20 2f 2f 20 54 69 6d 65           // Time
9930: 20 28 31 37 29 0d 0a 20 20 20 20 20 20 32 2c 20   (17)..      2, 
9940: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49             // UI
9950: 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20  nt16 (18)..     
9960: 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   4,            /
9970: 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20  / UInt32 (19).. 
9980: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
9990: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
99a0: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
99b0: 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d         // VarNum
99c0: 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20  eric (21)..     
99d0: 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f   int.MaxValue, /
99e0: 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  / AnsiStringFixe
99f0: 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20  dLength (22)..  
9a00: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
9a10: 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64  , // StringFixed
9a20: 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20  Length (23)..   
9a30: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c     int.MaxValue,
9a40: 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20   // ?? (24)..   
9a50: 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 20     int.MaxValue 
9a60: 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20   // Xml (25)..  
9a70: 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65    };....    inte
9a80: 72 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65  rnal static obje
9a90: 63 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72  ct DbTypeToNumer
9aa0: 69 63 50 72 65 63 69 73 69 6f 6e 28 44 62 54 79  icPrecision(DbTy
9ab0: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
9ac0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62        return _db
9ad0: 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65  typetonumericpre
9ae0: 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74 79 70 5d  cision[(int)typ]
9af0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
9b00: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f  private static o
9b10: 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74  bject[] _dbtypet
9b20: 6f 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f  onumericprecisio
9b30: 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e  n = {..      DBN
9b40: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e  ull.Value, // An
9b50: 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20  siString (0)..  
9b60: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
9b70: 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d  , // Binary (1).
9b80: 0a 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20  .      3,       
9b90: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29       // Byte (2)
9ba0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
9bb0: 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e  alue, // Boolean
9bc0: 20 28 33 29 0d 0a 20 20 20 20 20 20 31 39 2c 20   (3)..      19, 
9bd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72            // Cur
9be0: 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20  rency (4)..     
9bf0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
9c00: 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20  / Date (5)..    
9c10: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
9c20: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d  // DateTime (6).
9c30: 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20 20  .      53,      
9c40: 20 20 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20       // Decimal 
9c50: 28 37 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20  (7)..      53,  
9c60: 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62           // Doub
9c70: 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42  le (8)..      DB
9c80: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47  Null.Value, // G
9c90: 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 35  uid (9)..      5
9ca0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
9cb0: 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20  Int16 (10)..    
9cc0: 20 20 31 30 2c 20 20 20 20 20 20 20 20 20 20 20    10,           
9cd0: 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20  // Int32 (11).. 
9ce0: 20 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20       19,        
9cf0: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29     // Int64 (12)
9d00: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
9d10: 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20  alue, // Object 
9d20: 28 31 33 29 0d 0a 20 20 20 20 20 20 33 2c 20 20  (13)..      3,  
9d30: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79            // SBy
9d40: 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 32  te (14)..      2
9d50: 34 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  4,           // 
9d60: 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20  Single (15)..   
9d70: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
9d80: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d   // String (16).
9d90: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
9da0: 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37  lue, // Time (17
9db0: 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20  )..      5,     
9dc0: 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36         // UInt16
9dd0: 20 28 31 38 29 0d 0a 20 20 20 20 20 20 31 30 2c   (18)..      10,
9de0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49             // UI
9df0: 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20  nt32 (19)..     
9e00: 20 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f   19,           /
9e10: 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20  / UInt64 (20).. 
9e20: 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20       53,        
9e30: 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63     // VarNumeric
9e40: 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e   (21)..      DBN
9e50: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e  ull.Value, // An
9e60: 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  siStringFixedLen
9e70: 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20  gth (22)..      
9e80: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
9e90: 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67   StringFixedLeng
9ea0: 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44  th (23)..      D
9eb0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
9ec0: 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44  ?? (24)..      D
9ed0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20  BNull.Value  // 
9ee0: 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b  Xml (25)..    };
9ef0: 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  ....    internal
9f00: 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44   static object D
9f10: 62 54 79 70 65 54 6f 4e 75 6d 65 72 69 63 53 63  bTypeToNumericSc
9f20: 61 6c 65 28 44 62 54 79 70 65 20 74 79 70 29 0d  ale(DbType typ).
9f30: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
9f40: 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f 6e 75  turn _dbtypetonu
9f50: 6d 65 72 69 63 73 63 61 6c 65 5b 28 69 6e 74 29  mericscale[(int)
9f60: 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  typ];..    }....
9f70: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
9f80: 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74  ic object[] _dbt
9f90: 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c  ypetonumericscal
9fa0: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 42 4e  e = {..      DBN
9fb0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e  ull.Value, // An
9fc0: 73 69 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20  siString (0)..  
9fd0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
9fe0: 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d  , // Binary (1).
9ff0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
a000: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29       // Byte (2)
a010: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
a020: 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c 65 61 6e  alue, // Boolean
a030: 20 28 33 29 0d 0a 20 20 20 20 20 20 34 2c 20 20   (3)..      4,  
a040: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72            // Cur
a050: 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20  rency (4)..     
a060: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
a070: 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20  / Date (5)..    
a080: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
a090: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d  // DateTime (6).
a0a0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a0b0: 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d 61 6c 20  lue, // Decimal 
a0c0: 28 37 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (7)..      DBNul
a0d0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 6f 75 62  l.Value, // Doub
a0e0: 6c 65 20 28 38 29 0d 0a 20 20 20 20 20 20 44 42  le (8)..      DB
a0f0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 47  Null.Value, // G
a100: 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 30  uid (9)..      0
a110: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
a120: 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20  Int16 (10)..    
a130: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
a140: 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20  // Int32 (11).. 
a150: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
a160: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29     // Int64 (12)
a170: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
a180: 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20  alue, // Object 
a190: 28 31 33 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (13)..      0,  
a1a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79            // SBy
a1b0: 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44  te (14)..      D
a1c0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
a1d0: 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20  Single (15)..   
a1e0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
a1f0: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d   // String (16).
a200: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a210: 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37  lue, // Time (17
a220: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
a230: 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36         // UInt16
a240: 20 28 31 38 29 0d 0a 20 20 20 20 20 20 30 2c 20   (18)..      0, 
a250: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49             // UI
a260: 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20  nt32 (19)..     
a270: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
a280: 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20  / UInt64 (20).. 
a290: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
a2a0: 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63     // VarNumeric
a2b0: 20 28 32 31 29 0d 0a 20 20 20 20 20 20 44 42 4e   (21)..      DBN
a2c0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 41 6e  ull.Value, // An
a2d0: 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  siStringFixedLen
a2e0: 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20  gth (22)..      
a2f0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
a300: 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67   StringFixedLeng
a310: 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 44  th (23)..      D
a320: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
a330: 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20 20 20 44  ?? (24)..      D
a340: 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20  BNull.Value  // 
a350: 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b  Xml (25)..    };
a360: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
a370: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44  mary>..    /// D
a380: 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20 64 65  etermines the de
a390: 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74  fault database t
a3a0: 79 70 65 20 6e 61 6d 65 20 74 6f 20 62 65 20 75  ype name to be u
a3b0: 73 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20  sed when a..    
a3c0: 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69  /// per-connecti
a3d0: 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20  on value is not 
a3e0: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20  available...    
a3f0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
a400: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
a410: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  >..    /// The d
a420: 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65 20  efault database 
a430: 74 79 70 65 20 6e 61 6d 65 20 74 6f 20 75 73 65  type name to use
a440: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
a450: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
a460: 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  te static string
a470: 20 47 65 74 44 65 66 61 75 6c 74 54 79 70 65 4e   GetDefaultTypeN
a480: 61 6d 65 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ame()..    {..  
a490: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
a4a0: 75 65 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  ue = UnsafeNativ
a4b0: 65 4d 65 74 68 6f 64 73 2e 47 65 74 53 65 74 74  eMethods.GetSett
a4c0: 69 6e 67 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  ingValue(..     
a4d0: 20 20 20 20 20 20 20 22 55 73 65 5f 53 51 4c 69         "Use_SQLi
a4e0: 74 65 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c  teConvert_Defaul
a4f0: 74 54 79 70 65 4e 61 6d 65 22 2c 20 6e 75 6c 6c  tTypeName", null
a500: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  );....        if
a510: 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
a520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
a530: 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66  turn FallbackDef
a540: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d  aultTypeName;...
a550: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
a560: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  value;..    }...
a570: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
a580: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
a590: 72 6d 69 6e 65 73 20 74 68 65 20 74 79 70 65 20  rmines the type 
a5a0: 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 67 69 76  name for the giv
a5b0: 65 6e 20 64 61 74 61 62 61 73 65 20 76 61 6c 75  en database valu
a5c0: 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f  e type...    ///
a5d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
a5e0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
a5f0: 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e 54 68  ="connection">Th
a600: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e  e connection con
a610: 74 65 78 74 20 66 6f 72 20 63 75 73 74 6f 6d 20  text for custom 
a620: 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69  type mappings, i
a630: 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  f any.</param>..
a640: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
a650: 61 6d 65 3d 22 64 62 54 79 70 65 22 3e 54 68 65  ame="dbType">The
a660: 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20   database value 
a670: 74 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  type.</param>.. 
a680: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
a690: 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66  me="flags">The f
a6a0: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
a6b0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
a6c0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
a6d0: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
a6e0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
a6f0: 20 74 79 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e   type name or an
a700: 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 66   empty string if
a710: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
a720: 74 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72  termined.</retur
a730: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
a740: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
a750: 44 62 54 79 70 65 54 6f 54 79 70 65 4e 61 6d 65  DbTypeToTypeName
a760: 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
a770: 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e  eConnection conn
a780: 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  ection,..       
a790: 20 44 62 54 79 70 65 20 64 62 54 79 70 65 2c 0d   DbType dbType,.
a7a0: 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43  .        SQLiteC
a7b0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66  onnectionFlags f
a7c0: 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d  lags..        ).
a7d0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
a7e0: 73 74 72 69 6e 67 20 64 65 66 61 75 6c 74 54 79  string defaultTy
a7f0: 70 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61  peName = GetDefa
a800: 75 6c 74 54 79 70 65 4e 61 6d 65 28 29 3b 0d 0a  ultTypeName();..
a810: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f  ..        if (co
a820: 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  nnection != null
a830: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
a840: 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20            flags 
a850: 7c 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c  |= connection.Fl
a860: 61 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ags;....        
a870: 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26      if ((flags &
a880: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
a890: 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63  nFlags.UseConnec
a8a0: 74 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51  tionTypes) == SQ
a8b0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
a8c0: 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f  ags.UseConnectio
a8d0: 6e 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20  nTypes)..       
a8e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a8f0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62          SQLiteDb
a900: 54 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69  TypeMap connecti
a910: 6f 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f  onTypeNames = co
a920: 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61  nnection._typeNa
a930: 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  mes;....        
a940: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
a950: 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20  ectionTypeNames 
a960: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
a970: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a990: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
a9a0: 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20  ping value;.... 
a9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9c0: 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
a9d0: 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65  nTypeNames.TryGe
a9e0: 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f  tValue(dbType, o
a9f0: 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa10: 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65      return value
aa20: 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  .typeName;..    
aa30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
aa40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aa50: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
aa60: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73       // NOTE: Us
aa70: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 64 61  e the default da
aa80: 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65  tabase type name
aa90: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
aaa0: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ion...          
aab0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
aac0: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c            defaul
aad0: 74 54 79 70 65 4e 61 6d 65 20 3d 20 63 6f 6e 6e  tTypeName = conn
aae0: 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 54 79  ection.DefaultTy
aaf0: 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  peName;..       
ab00: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ab10: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  }....        if 
ab20: 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
ab30: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
ab40: 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d  NoGlobalTypes) =
ab50: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
ab60: 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c  onFlags.NoGlobal
ab70: 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20  Types)..        
ab80: 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75      return defau
ab90: 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  ltTypeName;.... 
aba0: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79         lock (_sy
abb0: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20  ncRoot)..       
abc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
abd0: 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d  if (_typeNames =
abe0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
abf0: 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61           _typeNa
ac00: 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44  mes = GetSQLiteD
ac10: 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20  bTypeMap();.... 
ac20: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
ac30: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
ac40: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
ac50: 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61       if (_typeNa
ac60: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
ac70: 64 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c 75  dbType, out valu
ac80: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
ac90: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
aca0: 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  e.typeName;..   
acb0: 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21 4e       }....#if !N
acc0: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
acd0: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
ace0: 20 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61          if ((fla
acf0: 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65  gs & SQLiteConne
ad00: 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65  ctionFlags.Trace
ad10: 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69  Warning) == SQLi
ad20: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
ad30: 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67 29 0d  s.TraceWarning).
ad40: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
ad50: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72          Trace.Wr
ad60: 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46  iteLine(String.F
ad70: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
ad80: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
ad90: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
ada0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
adb0: 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54       "WARNING: T
adc0: 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c  ype mapping fail
add0: 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65  ed, returning de
ade0: 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d  fault name \"{0}
adf0: 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e  \" for type {1}.
ae00: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
ae10: 20 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e      defaultTypeN
ae20: 61 6d 65 2c 20 64 62 54 79 70 65 29 29 3b 0d 0a  ame, dbType));..
ae30: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
ae40: 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  f....        ret
ae50: 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e  urn defaultTypeN
ae60: 61 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ame;..    }.... 
ae70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
ae80: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
ae90: 74 20 61 20 44 62 54 79 70 65 20 74 6f 20 61 20  t a DbType to a 
aea0: 54 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  Type..    /// </
aeb0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
aec0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
aed0: 79 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74  yp">The DbType t
aee0: 6f 20 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f  o convert from</
aef0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
af00: 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f  <returns>The clo
af10: 73 65 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20  sest-match .NET 
af20: 74 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  type</returns>..
af30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
af40: 74 69 63 20 54 79 70 65 20 44 62 54 79 70 65 54  tic Type DbTypeT
af50: 6f 54 79 70 65 28 44 62 54 79 70 65 20 74 79 70  oType(DbType typ
af60: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
af70: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f  return _dbtypeTo
af80: 54 79 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  Type[(int)typ];.
af90: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
afa0: 69 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70  ivate static Typ
afb0: 65 5b 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70  e[] _dbtypeToTyp
afc0: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70  e = {..      typ
afd0: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
afe0: 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29  / AnsiString (0)
aff0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
b000: 79 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e  yte[]),   // Bin
b010: 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74  ary (1)..      t
b020: 79 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20  ypeof(byte),    
b030: 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20   // Byte (2)..  
b040: 20 20 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29      typeof(bool)
b050: 2c 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e  ,     // Boolean
b060: 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (3)..      type
b070: 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f  of(decimal),  //
b080: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
b090: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
b0a0: 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28  Time), // Date (
b0b0: 35 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  5)..      typeof
b0c0: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44  (DateTime), // D
b0d0: 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20  ateTime (6)..   
b0e0: 20 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61     typeof(decima
b0f0: 6c 29 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20  l),  // Decimal 
b100: 28 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (7)..      typeo
b110: 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20  f(double),   // 
b120: 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20  Double (8)..    
b130: 20 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20    typeof(Guid), 
b140: 20 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d      // Guid (9).
b150: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e  .      typeof(In
b160: 74 31 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31  t16),    // Int1
b170: 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79  6 (10)..      ty
b180: 70 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20  peof(Int32),    
b190: 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20  // Int32 (11).. 
b1a0: 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36       typeof(Int6
b1b0: 34 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20  4),    // Int64 
b1c0: 28 31 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (12)..      type
b1d0: 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f  of(object),   //
b1e0: 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20   Object (13)..  
b1f0: 20 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65      typeof(sbyte
b200: 29 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28  ),    // SByte (
b210: 31 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  14)..      typeo
b220: 66 28 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20  f(float),    // 
b230: 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20  Single (15)..   
b240: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
b250: 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28  ),   // String (
b260: 31 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  16)..      typeo
b270: 66 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20  f(DateTime), // 
b280: 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20  Time (17)..     
b290: 20 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c   typeof(UInt16),
b2a0: 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38     // UInt16 (18
b2b0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b2c0: 55 49 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49  UInt32),   // UI
b2d0: 6e 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20  nt32 (19)..     
b2e0: 20 74 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c   typeof(UInt64),
b2f0: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
b300: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b310: 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61  double),   // Va
b320: 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20  rNumeric (21).. 
b330: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
b340: 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74  ng),   // AnsiSt
b350: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20  ringFixedLength 
b360: 28 32 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (22)..      type
b370: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
b380: 20 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67   StringFixedLeng
b390: 74 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74  th (23)..      t
b3a0: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
b3b0: 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20   // ?? (24)..   
b3c0: 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67     typeof(string
b3d0: 29 2c 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29  ),   // Xml (25)
b3e0: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
b3f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
b400: 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76     /// For a giv
b410: 65 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  en type, return 
b420: 74 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63  the closest-matc
b430: 68 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66  h SQLite TypeAff
b440: 69 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c  inity, which onl
b450: 79 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20  y understands a 
b460: 76 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62  very limited sub
b470: 73 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20  set of types... 
b480: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
b490: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
b4a0: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
b4b0: 20 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74   type to evaluat
b4c0: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
b4d0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
b4e0: 53 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69  SQLite type affi
b4f0: 6e 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79  nity for that ty
b500: 70 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  pe.</returns>.. 
b510: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
b520: 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20  ic TypeAffinity 
b530: 54 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54  TypeToAffinity(T
b540: 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d  ype typ)..    {.
b550: 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20  .      TypeCode 
b560: 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70  tc = Type.GetTyp
b570: 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20  eCode(typ);..   
b580: 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70     if (tc == Typ
b590: 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20  eCode.Object).. 
b5a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b5b0: 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f  if (typ == typeo
b5c0: 66 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70  f(byte[]) || typ
b5d0: 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29   == typeof(Guid)
b5e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  )..          ret
b5f0: 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79  urn TypeAffinity
b600: 2e 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20  .Blob;..        
b610: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
b620: 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e  return TypeAffin
b630: 69 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20  ity.Text;..     
b640: 20 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   }..      return
b650: 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69   _typecodeAffini
b660: 74 69 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a  ties[(int)tc];..
b670: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
b680: 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65  vate static Type
b690: 41 66 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65  Affinity[] _type
b6a0: 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d  codeAffinities =
b6b0: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66   {..      TypeAf
b6c0: 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20  finity.Null,    
b6d0: 20 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20   // Empty (0).. 
b6e0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
b6f0: 79 2e 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f  y.Blob,     // O
b700: 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20  bject (1)..     
b710: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75   TypeAffinity.Nu
b720: 6c 6c 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c  ll,     // DBNul
b730: 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70  l (2)..      Typ
b740: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c  eAffinity.Int64,
b750: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28      // Boolean (
b760: 33 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  3)..      TypeAf
b770: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
b780: 20 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20   // Char (4)..  
b790: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
b7a0: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42  .Int64,    // SB
b7b0: 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54  yte (5)..      T
b7c0: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
b7d0: 34 2c 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36  4,    // Byte (6
b7e0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
b7f0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
b800: 2f 2f 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20  // Int16 (7)..  
b810: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
b820: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
b830: 6e 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20  nt16 (8)..      
b840: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
b850: 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20  64,    // Int32 
b860: 28 39 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (9)..      TypeA
b870: 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20  ffinity.Int64,  
b880: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29    // UInt32 (10)
b890: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
b8a0: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
b8b0: 2f 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20  / Int64 (11)..  
b8c0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
b8d0: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49  .Int64,    // UI
b8e0: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20  nt64 (12)..     
b8f0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f   TypeAffinity.Do
b900: 75 62 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c  uble,   // Singl
b910: 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79  e (13)..      Ty
b920: 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c  peAffinity.Doubl
b930: 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28  e,   // Double (
b940: 31 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  14)..      TypeA
b950: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20  ffinity.Double, 
b960: 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35    // Decimal (15
b970: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
b980: 69 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20  inity.DateTime, 
b990: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29  // DateTime (16)
b9a0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
b9b0: 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f  nity.Null,     /
b9c0: 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20  / ?? (17)..     
b9d0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
b9e0: 78 74 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e  xt      // Strin
b9f0: 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a  g (18)..    };..
ba00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
ba10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69  ry>..    /// Bui
ba20: 6c 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  lds and returns 
ba30: 61 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67  a map containing
ba40: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
ba50: 6c 75 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20  lumn types..    
ba60: 2f 2f 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  /// recognized b
ba70: 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e  y this provider.
ba80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
ba90: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
baa0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
bab0: 20 41 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e   A map containin
bac0: 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  g the database c
bad0: 6f 6c 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f  olumn types reco
bae0: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a  gnized by this..
baf0: 20 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72      /// provider
bb00: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74  ...    /// </ret
bb10: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61  urns>..    priva
bb20: 74 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65  te static SQLite
bb30: 44 62 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c  DbTypeMap GetSQL
bb40: 69 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a  iteDbTypeMap()..
bb50: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72      {..        r
bb60: 65 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65  eturn new SQLite
bb70: 44 62 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51  DbTypeMap(new SQ
bb80: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
bb90: 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  g[] {..         
bba0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
bbb0: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49  ypeMapping("BIGI
bbc0: 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  NT", DbType.Int6
bbd0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
bbe0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
bbf0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
bc00: 22 42 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70  "BIGUINT", DbTyp
bc10: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
bc20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
bc30: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
bc40: 61 70 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c  apping("BINARY",
bc50: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
bc60: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
bc70: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
bc80: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49  bTypeMapping("BI
bc90: 54 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  T", DbType.Boole
bca0: 61 6e 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  an, true),..    
bcb0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
bcc0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
bcd0: 22 42 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42  "BLOB", DbType.B
bce0: 69 6e 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20  inary, true),.. 
bcf0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
bd00: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
bd10: 6e 67 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70  ng("BOOL", DbTyp
bd20: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
bd30: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
bd40: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
bd50: 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e  Mapping("BOOLEAN
bd60: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
bd70: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
bd80: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
bd90: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
bda0: 22 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41  "CHAR", DbType.A
bdb0: 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65  nsiStringFixedLe
bdc0: 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
bdd0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
bde0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
bdf0: 67 28 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65  g("CLOB", DbType
be00: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
be10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
be20: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
be30: 70 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c  pping("COUNTER",
be40: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66   DbType.Int64, f
be50: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
be60: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
be70: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52  TypeMapping("CUR
be80: 52 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44  RENCY", DbType.D
be90: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
bea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
beb0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
bec0: 70 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54  ping("DATE", DbT
bed0: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
bee0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
bef0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
bf00: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45  ypeMapping("DATE
bf10: 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61  TIME", DbType.Da
bf20: 74 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a  teTime, true),..
bf30: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
bf40: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
bf50: 69 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44  ing("DECIMAL", D
bf60: 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74  bType.Decimal, t
bf70: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
bf80: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
bf90: 79 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42  ypeMapping("DOUB
bfa0: 4c 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62  LE", DbType.Doub
bfb0: 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  le, false),..   
bfc0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
bfd0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
bfe0: 28 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65  ("FLOAT", DbType
bff0: 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c  .Double, false),
c000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c010: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c020: 70 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c  pping("GENERAL",
c030: 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20   DbType.Binary, 
c040: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
c050: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
c060: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55  bTypeMapping("GU
c070: 49 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64  ID", DbType.Guid
c080: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c090: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c0a0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c0b0: 49 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70  IDENTITY", DbTyp
c0c0: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
c0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c0e0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c0f0: 70 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44  pping("IMAGE", D
c100: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
c110: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
c120: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
c130: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22  ypeMapping("INT"
c140: 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20  , DbType.Int32, 
c150: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
c160: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c170: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54  TypeMapping("INT
c180: 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65  8", DbType.SByte
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: 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49  INT16", DbType.I
c1d0: 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
c1e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
c1f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
c200: 6e 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79  ng("INT32", DbTy
c210: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
c220: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c230: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c240: 61 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20  apping("INT64", 
c250: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
c260: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
c270: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
c280: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
c290: 47 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  GER", DbType.Int
c2a0: 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  64, true),..    
c2b0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c2c0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c2d0: 22 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79  "INTEGER8", DbTy
c2e0: 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29  pe.SByte, false)
c2f0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c300: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c310: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31  apping("INTEGER1
c320: 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36  6", DbType.Int16
c330: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c340: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c350: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c360: 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79  INTEGER32", DbTy
c370: 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  pe.Int32, false)
c380: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c390: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c3a0: 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36  apping("INTEGER6
c3b0: 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
c3c0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c3d0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c3e0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c3f0: 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65  LOGICAL", DbType
c400: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
c410: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c420: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c430: 61 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44  apping("LONG", D
c440: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
c450: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c460: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c470: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43  peMapping("LONGC
c480: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72  HAR", DbType.Str
c490: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
c4a0: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
c4b0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
c4c0: 67 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62  g("LONGTEXT", Db
c4d0: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
c4e0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c4f0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c500: 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56  peMapping("LONGV
c510: 41 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e  ARCHAR", DbType.
c520: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
c530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c540: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c550: 70 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54  ping("MEMO", DbT
c560: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
c570: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c580: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c590: 65 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22  eMapping("MONEY"
c5a0: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
c5b0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c5c0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c5d0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c5e0: 4e 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  NCHAR", DbType.S
c5f0: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
c600: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
c610: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c620: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
c630: 4f 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72  OTE", DbType.Str
c640: 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ing, false),..  
c650: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
c660: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
c670: 67 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70  g("NTEXT", DbTyp
c680: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  e.String, false)
c690: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c6a0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c6b0: 61 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c  apping("NUMBER",
c6c0: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
c6d0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c6e0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
c6f0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
c700: 55 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e  UMERIC", DbType.
c710: 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c  Decimal, false),
c720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c730: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c740: 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22  pping("NVARCHAR"
c750: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
c760: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
c770: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
c780: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c  bTypeMapping("OL
c790: 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65  EOBJECT", DbType
c7a0: 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
c7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c7c0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c7d0: 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54  pping("RAW", DbT
c7e0: 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
c7f0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c800: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c810: 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c  eMapping("REAL",
c820: 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
c830: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
c840: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c850: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e  TypeMapping("SIN
c860: 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e  GLE", DbType.Sin
c870: 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gle, true),..   
c880: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c890: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c8a0: 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
c8b0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
c8c0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
c8d0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c8e0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
c8f0: 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  LLINT", DbType.I
c900: 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt16, true),..  
c910: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
c920: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
c930: 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44  g("SMALLUINT", D
c940: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72  bType.UInt16, tr
c950: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
c960: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c970: 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e  peMapping("STRIN
c980: 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  G", DbType.Strin
c990: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
c9a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c9b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c9c0: 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  "TEXT", DbType.S
c9d0: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c9f0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ca00: 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79  ing("TIME", DbTy
ca10: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
ca20: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
ca30: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
ca40: 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53  peMapping("TIMES
ca50: 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61  TAMP", DbType.Da
ca60: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
ca70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
ca80: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
ca90: 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20  ping("TINYINT", 
caa0: 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75  DbType.Byte, tru
cab0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
cac0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
cad0: 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49  eMapping("TINYSI
cae0: 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  NT", DbType.SByt
caf0: 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
cb00: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
cb10: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
cb20: 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
cb30: 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
cb40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
cb50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
cb60: 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70  g("UINT8", DbTyp
cb70: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
cb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cb90: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cba0: 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44  ping("UINT16", D
cbb0: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61  bType.UInt16, fa
cbc0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
cbd0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cbe0: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
cbf0: 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
cc00: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
cc10: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cc20: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cc30: 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70  ("UINT64", DbTyp
cc40: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
cc50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
cc60: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
cc70: 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20  apping("ULONG", 
cc80: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
cc90: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
cca0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
ccb0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49  TypeMapping("UNI
ccc0: 51 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20  QUEIDENTIFIER", 
ccd0: 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75  DbType.Guid, tru
cce0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ccf0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
cd00: 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
cd10: 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  EDINTEGER", DbTy
cd20: 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29  pe.UInt64, true)
cd30: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
cd40: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
cd50: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
cd60: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
cd70: 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
cd80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cd90: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cda0: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
cdb0: 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
cdc0: 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
cdd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
cde0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
cdf0: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
ce00: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
ce10: 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
ce20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
ce30: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
ce40: 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
ce50: 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79  INTEGER64", DbTy
ce60: 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
ce70: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ce80: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
ce90: 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41  Mapping("VARBINA
cea0: 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
ceb0: 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
cec0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
ced0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cee0: 28 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  ("VARCHAR", DbTy
cef0: 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74  pe.AnsiString, t
cf00: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
cf10: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cf20: 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
cf30: 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e  HAR2", DbType.An
cf40: 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  siString, false)
cf50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
cf60: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
cf70: 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20  apping("YESNO", 
cf80: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
cf90: 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20  false)..        
cfa0: 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  });..    }....  
cfb0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cfc0: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
cfd0: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
cfe0: 3c 73 65 65 20 63 72 65 66 3d 22 44 62 54 79 70  <see cref="DbTyp
cff0: 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20 62  e" /> value to b
d000: 65 20 75 73 65 64 20 77 68 65 6e 20 61 0d 0a 20  e used when a.. 
d010: 20 20 20 2f 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65     /// per-conne
d020: 63 74 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 6e  ction value is n
d030: 6f 74 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 20  ot available... 
d040: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
d050: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
d060: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
d070: 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63  e default <see c
d080: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
d090: 76 61 6c 75 65 20 74 6f 20 75 73 65 2e 0d 0a 20  value to use... 
d0a0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
d0b0: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
d0c0: 74 61 74 69 63 20 44 62 54 79 70 65 20 47 65 74  tatic DbType Get
d0d0: 44 65 66 61 75 6c 74 44 62 54 79 70 65 28 29 0d  DefaultDbType().
d0e0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
d0f0: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 55  string value = U
d100: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
d110: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
d120: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
d130: 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
d140: 65 72 74 5f 44 65 66 61 75 6c 74 44 62 54 79 70  ert_DefaultDbTyp
d150: 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20  e", null);....  
d160: 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
d170: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
d180: 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c        return Fal
d190: 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79  lbackDefaultDbTy
d1a0: 70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6f  pe;....        o
d1b0: 62 6a 65 63 74 20 65 6e 75 6d 56 61 6c 75 65 20  bject enumValue 
d1c0: 3d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  = SQLiteConnecti
d1d0: 6f 6e 2e 54 72 79 50 61 72 73 65 45 6e 75 6d 28  on.TryParseEnum(
d1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 79  ..            ty
d1f0: 70 65 6f 66 28 44 62 54 79 70 65 29 2c 20 76 61  peof(DbType), va
d200: 6c 75 65 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  lue, true);.... 
d210: 20 20 20 20 20 20 20 69 66 20 28 21 28 65 6e 75         if (!(enu
d220: 6d 56 61 6c 75 65 20 69 73 20 44 62 54 79 70 65  mValue is DbType
d230: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
d240: 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44  return FallbackD
d250: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d  efaultDbType;...
d260: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
d270: 28 44 62 54 79 70 65 29 65 6e 75 6d 56 61 6c 75  (DbType)enumValu
d280: 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  e;..    }....   
d290: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
d2a0: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69      /// For a gi
d2b0: 76 65 6e 20 74 79 70 65 20 6e 61 6d 65 2c 20 72  ven type name, r
d2c0: 65 74 75 72 6e 20 61 20 63 6c 6f 73 65 73 74 2d  eturn a closest-
d2d0: 6d 61 74 63 68 20 2e 4e 45 54 20 74 79 70 65 0d  match .NET type.
d2e0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
d2f0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
d300: 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e 65 63  ram name="connec
d310: 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e 65 63  tion">The connec
d320: 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72  tion context for
d330: 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d 61 70   custom type map
d340: 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e 3c 2f  pings, if any.</
d350: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
d360: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 6d  <param name="nam
d370: 65 22 3e 54 68 65 20 6e 61 6d 65 20 6f 66 20 74  e">The name of t
d380: 68 65 20 74 79 70 65 20 74 6f 20 6d 61 74 63 68  he type to match
d390: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d3a0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
d3b0: 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20  lags">The flags 
d3c0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
d3d0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
d3e0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70  ction object.</p
d3f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
d400: 72 65 74 75 72 6e 73 3e 54 68 65 20 2e 4e 45 54  returns>The .NET
d410: 20 44 42 54 79 70 65 20 74 68 65 20 74 65 78 74   DBType the text
d420: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 2e 3c 2f   evaluates to.</
d430: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
d440: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62  ternal static Db
d450: 54 79 70 65 20 54 79 70 65 4e 61 6d 65 54 6f 44  Type TypeNameToD
d460: 62 54 79 70 65 28 0d 0a 20 20 20 20 20 20 20 20  bType(..        
d470: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d480: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20   connection,..  
d490: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
d4a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  e,..        SQLi
d4b0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
d4c0: 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20  s flags..       
d4d0: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
d4e0: 20 20 20 44 62 54 79 70 65 20 64 65 66 61 75 6c     DbType defaul
d4f0: 74 44 62 54 79 70 65 20 3d 20 47 65 74 44 65 66  tDbType = GetDef
d500: 61 75 6c 74 44 62 54 79 70 65 28 29 3b 0d 0a 0d  aultDbType();...
d510: 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e  .        if (con
d520: 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29  nection != null)
d530: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
d540: 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c           flags |
d550: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61  = connection.Fla
d560: 67 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  gs;....         
d570: 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20     if ((flags & 
d580: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
d590: 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74  Flags.UseConnect
d5a0: 69 6f 6e 54 79 70 65 73 29 20 3d 3d 20 53 51 4c  ionTypes) == SQL
d5b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
d5c0: 67 73 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e  gs.UseConnection
d5d0: 54 79 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20  Types)..        
d5e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d5f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54         SQLiteDbT
d600: 79 70 65 4d 61 70 20 63 6f 6e 6e 65 63 74 69 6f  ypeMap connectio
d610: 6e 54 79 70 65 4e 61 6d 65 73 20 3d 20 63 6f 6e  nTypeNames = con
d620: 6e 65 63 74 69 6f 6e 2e 5f 74 79 70 65 4e 61 6d  nection._typeNam
d630: 65 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  es;....         
d640: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
d650: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20 21  ctionTypeNames !
d660: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d670: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d690: 69 66 20 28 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c  if (name != null
d6a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d6b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6d0: 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61    SQLiteDbTypeMa
d6e0: 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a  pping value;....
d6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d700: 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
d710: 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e  ectionTypeNames.
d720: 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65  TryGetValue(name
d730: 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d750: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d770: 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
d780: 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20  ue.dataType;..  
d790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7a0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7c0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
d7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
d7e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
d800: 74 20 69 6e 64 65 78 20 3d 20 6e 61 6d 65 2e 49  t index = name.I
d810: 6e 64 65 78 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a  ndexOf('(');....
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d830: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d840: 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a  (index > 0) &&..
d850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d870: 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
d880: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28  mes.TryGetValue(
d890: 6e 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 30  name.Substring(0
d8a0: 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64  , index).TrimEnd
d8b0: 28 29 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d  (), out value)).
d8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
d8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d900: 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
d910: 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
d920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d930: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d950: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d960: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
d970: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
d980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d990: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d9a0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74    // NOTE: Use t
d9b0: 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62  he default datab
d9c0: 61 73 65 20 74 79 70 65 20 66 6f 72 20 74 68 65  ase type for the
d9d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
d9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
d9f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
da00: 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 20    defaultDbType 
da10: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66  = connection.Def
da20: 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20  aultDbType;..   
da30: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
da40: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
da50: 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51   if ((flags & SQ
da60: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
da70: 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65  ags.NoGlobalType
da80: 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  s) == SQLiteConn
da90: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c  ectionFlags.NoGl
daa0: 6f 62 61 6c 54 79 70 65 73 29 0d 0a 20 20 20 20  obalTypes)..    
dab0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
dac0: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d  efaultDbType;...
dad0: 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f  .        lock (_
dae0: 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20  syncRoot)..     
daf0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
db00: 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73    if (_typeNames
db10: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
db20: 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70 65             _type
db30: 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74  Names = GetSQLit
db40: 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d  eDbTypeMap();...
db50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
db60: 28 6e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  (name != null)..
db70: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
db90: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
dba0: 6e 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ng value;....   
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
dbc0: 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47  (_typeNames.TryG
dbd0: 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75  etValue(name, ou
dbe0: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
dbf0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
dc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc10: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64    return value.d
dc20: 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
dc30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
dc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
dc50: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
dc60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
dc70: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e            int in
dc80: 64 65 78 20 3d 20 6e 61 6d 65 2e 49 6e 64 65 78  dex = name.Index
dc90: 4f 66 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20  Of('(');....    
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcb0: 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20  if ((index > 0) 
dcc0: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
dce0: 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c  eNames.TryGetVal
dcf0: 75 65 28 6e 61 6d 65 2e 53 75 62 73 74 72 69 6e  ue(name.Substrin
dd00: 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72 69 6d  g(0, index).Trim
dd10: 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c 75 65  End(), out value
dd20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
dd30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd50: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e     return value.
dd60: 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20  dataType;..     
dd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
dd80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dd90: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
dda0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d   }..        }...
ddb0: 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50 41 43  .#if !NET_COMPAC
ddc0: 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f 57 41  T_20 && TRACE_WA
ddd0: 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20 20 69  RNING..        i
dde0: 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c  f (!String.IsNul
ddf0: 6c 4f 72 45 6d 70 74 79 28 6e 61 6d 65 29 20 26  lOrEmpty(name) &
de00: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28  &..            (
de10: 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43  (flags & SQLiteC
de20: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54  onnectionFlags.T
de30: 72 61 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20  raceWarning) == 
de40: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
de50: 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69  Flags.TraceWarni
de60: 6e 67 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ng))..        {.
de70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61  .            Tra
de80: 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 53 74 72  ce.WriteLine(Str
de90: 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
deb0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
dec0: 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20  Culture,..      
ded0: 20 20 20 20 20 20 20 20 20 20 22 57 41 52 4e 49            "WARNI
dee0: 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e 67  NG: Type mapping
def0: 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e 69   failed, returni
df00: 6e 67 20 64 65 66 61 75 6c 74 20 74 79 70 65 20  ng default type 
df10: 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20 5c 22 7b  {0} for name \"{
df20: 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20  1}\".",..       
df30: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
df40: 44 62 54 79 70 65 2c 20 6e 61 6d 65 29 29 3b 0d  DbType, name));.
df50: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64  .        }..#end
df60: 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65  if....        re
df70: 74 75 72 6e 20 64 65 66 61 75 6c 74 44 62 54 79  turn defaultDbTy
df80: 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20  pe;..    }..    
df90: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
dfa0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
dfb0: 20 6f 62 6a 65 63 74 20 5f 73 79 6e 63 52 6f 6f   object _syncRoo
dfc0: 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29  t = new object()
dfd0: 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ;..    private s
dfe0: 74 61 74 69 63 20 53 51 4c 69 74 65 44 62 54 79  tatic SQLiteDbTy
dff0: 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d 65 73  peMap _typeNames
e000: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d 0a 0d   = null;..  }...
e010: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
e020: 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 68  ..  /// SQLite h
e030: 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20  as very limited 
e040: 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20 69 6e  types, and is in
e050: 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d 62 61  herently text-ba
e060: 73 65 64 2e 20 20 54 68 65 20 66 69 72 73 74 20  sed.  The first 
e070: 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20 72 65  5 types below re
e080: 70 72 65 73 65 6e 74 20 74 68 65 20 73 75 6d 20  present the sum 
e090: 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53 51 4c  of all types SQL
e0a0: 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 65 72  ite..  /// under
e0b0: 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44 61 74  stands.  The Dat
e0c0: 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f 6e 20  eTime extension 
e0d0: 74 6f 20 74 68 65 20 73 70 65 63 20 69 73 20 66  to the spec is f
e0e0: 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 20  or internal use 
e0f0: 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  only...  /// </s
e100: 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
e110: 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66 69 6e  c enum TypeAffin
e120: 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ity..  {..    //
e130: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e140: 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d 0a 20   /// Not used.. 
e150: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e160: 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69 61 6c  >..    Uninitial
e170: 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20 20 2f  ized = 0,..    /
e180: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e190: 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 67 65    /// All intege
e1a0: 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66  rs in SQLite def
e1b0: 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d 0a 20  ault to Int64.. 
e1c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e1d0: 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d 20 31  >..    Int64 = 1
e1e0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
e1f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c  ary>..    /// Al
e200: 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  l floating point
e210: 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51 4c 69   numbers in SQLi
e220: 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 64 6f  te default to do
e230: 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  uble..    /// </
e240: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 6f  summary>..    Do
e250: 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 20 2f  uble = 2,..    /
e260: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e270: 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
e280: 74 20 64 61 74 61 20 74 79 70 65 20 6f 66 20 53  t data type of S
e290: 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d 0a 20  QLite is text.. 
e2a0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e2b0: 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20 33 2c  >..    Text = 3,
e2c0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
e2d0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 79 70  ry>..    /// Typ
e2e0: 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79 70 65  ically blob type
e2f0: 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65 6e 20  s are only seen 
e300: 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20 66 72  when returned fr
e310: 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d 0a 20  om a function.. 
e320: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e330: 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20 34 2c  >..    Blob = 4,
e340: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
e350: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c  ry>..    /// Nul
e360: 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65 20 72  l types can be r
e370: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 75 6e  eturned from fun
e380: 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f 2f 20  ctions..    /// 
e390: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e3a0: 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 20 2f  Null = 5,..    /
e3b0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e3c0: 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72    /// Used inter
e3d0: 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72  nally by this pr
e3e0: 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20  ovider..    /// 
e3f0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
e400: 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c 0d 0a  DateTime = 10,..
e410: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e420: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 64 20  >..    /// Used 
e430: 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68  internally by th
e440: 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 20 20  is provider..   
e450: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e460: 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31 2c 0d  .    None = 11,.
e470: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
e480: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
e490: 68 65 73 65 20 61 72 65 20 74 68 65 20 65 76 65  hese are the eve
e4a0: 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63 69 61  nt types associa
e4b0: 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a 20 20  ted with the..  
e4c0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53  /// <see cref="S
e4d0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
e4e0: 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f 3e 0d  ventHandler" />.
e4f0: 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 65 20  .  /// delegate 
e500: 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65 73 70  (and its corresp
e510: 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20 61 6e  onding event) an
e520: 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65  d the..  /// <se
e530: 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 74 69  e cref="Connecti
e540: 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f 3e 20  onEventArgs" /> 
e550: 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f  class...  /// </
e560: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c  summary>..  publ
e570: 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 6f  ic enum SQLiteCo
e580: 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 79 70  nnectionEventTyp
e590: 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
e5a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e5b0: 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e     /// Not used.
e5c0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e5d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e  mmary>..      In
e5e0: 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d 0a 20  valid = -1,.... 
e5f0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
e600: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  y>..      /// No
e610: 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  t used...      /
e620: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e630: 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d 20 30       Unknown = 0
e640: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
e650: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e660: 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
e670: 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70 65 6e  on is being open
e680: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
e690: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e6a0: 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d 0a 0d   Opening = 1,...
e6b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
e6c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
e6d0: 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  The connection s
e6e0: 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e 20 70  tring has been p
e6f0: 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  arsed...      //
e700: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e710: 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e 53 74      ConnectionSt
e720: 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20  ring = 2,....   
e730: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e740: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e750: 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f  connection was o
e760: 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  pened...      //
e770: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e780: 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33 2c 0d      Opened = 3,.
e790: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
e7a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
e7b0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
e7c0: 22 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 22  "ChangeDatabase"
e7d0: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 20 63   /> method was c
e7e0: 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a 20 20  alled on the..  
e7f0: 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 74 69      /// connecti
e800: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
e810: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e820: 20 43 68 61 6e 67 65 44 61 74 61 62 61 73 65 20   ChangeDatabase 
e830: 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 4,....      //
e840: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e850: 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
e860: 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74 65 64  tion was created
e870: 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65   using the conne
e880: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f  ction...      //
e890: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
e8a0: 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63 74 69      NewTransacti
e8b0: 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20  on = 5,....     
e8c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e8d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
e8e0: 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65 6e 6c  nnection was enl
e8f0: 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74 72 61  isted into a tra
e900: 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20  nsaction...     
e910: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
e920: 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54 72 61  .      EnlistTra
e930: 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d 0a 0d  nsaction = 6,...
e940: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
e950: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
e960: 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 63 72  A command was cr
e970: 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20  eated using the 
e980: 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
e990: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
e9a0: 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f 6d 6d  >..      NewComm
e9b0: 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20  and = 7,....    
e9c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
e9d0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74  .      /// A dat
e9e0: 61 20 72 65 61 64 65 72 20 77 61 73 20 63 72 65  a reader was cre
e9f0: 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 63  ated using the c
ea00: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
ea10: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ea20: 0d 0a 20 20 20 20 20 20 4e 65 77 44 61 74 61 52  ..      NewDataR
ea30: 65 61 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a 20 20  eader = 8,....  
ea40: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ea50: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20  >..      /// An 
ea60: 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 3c 73  instance of a <s
ea70: 65 65 20 63 72 65 66 3d 22 43 72 69 74 69 63 61  ee cref="Critica
ea80: 6c 48 61 6e 64 6c 65 22 20 2f 3e 20 64 65 72 69  lHandle" /> deri
ea90: 76 65 64 20 63 6c 61 73 73 20 68 61 73 0d 0a 20  ved class has.. 
eaa0: 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20 63 72       /// been cr
eab0: 65 61 74 65 64 20 74 6f 20 77 72 61 70 20 61 20  eated to wrap a 
eac0: 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63 65 2e  native resource.
ead0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
eae0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
eaf0: 77 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 20  wCriticalHandle 
eb00: 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 9,....      //
eb10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
eb20: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
eb30: 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 63  ction is being c
eb40: 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
eb50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
eb60: 20 20 20 20 43 6c 6f 73 69 6e 67 20 3d 20 31 30      Closing = 10
eb70: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
eb80: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
eb90: 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
eba0: 6f 6e 20 77 61 73 20 63 6c 6f 73 65 64 2e 0d 0a  on was closed...
ebb0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ebc0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73  ary>..      Clos
ebd0: 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20  ed = 11,....    
ebe0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ebf0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d  .      /// A com
ec00: 6d 61 6e 64 20 69 73 20 62 65 69 6e 67 20 64 69  mand is being di
ec10: 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  sposed...      /
ec20: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ec30: 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 43 6f       DisposingCo
ec40: 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d 0a 20  mmand = 12,.... 
ec50: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
ec60: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
ec70: 64 61 74 61 20 72 65 61 64 65 72 20 69 73 20 62  data reader is b
ec80: 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e 0d 0a  eing disposed...
ec90: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
eca0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69 73 70  ary>..      Disp
ecb0: 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72 20  osingDataReader 
ecc0: 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 13,....      /
ecd0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ece0: 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
ecf0: 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20 63  eader is being c
ed00: 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  losed...      //
ed10: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
ed20: 20 20 20 20 43 6c 6f 73 69 6e 67 44 61 74 61 52      ClosingDataR
ed30: 65 61 64 65 72 20 3d 20 31 34 0d 0a 20 20 7d 0d  eader = 14..  }.
ed40: 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
ed50: 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69  y>..  /// This i
ed60: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
ed70: 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f 2e   SQLite for ADO.
ed80: 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73 20  NET can process 
ed90: 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64 73  date/time fields
eda0: 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61 62   in..  /// datab
edb0: 61 73 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20 73  ases in one of s
edc0: 69 78 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 2f  ix formats...  /
edd0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ede0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
edf0: 20 20 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66 6f    /// ISO8601 fo
ee00: 72 6d 61 74 20 69 73 20 6d 6f 72 65 20 63 6f 6d  rmat is more com
ee10: 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62 6c  patible, readabl
ee20: 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73 73  e, fully-process
ee30: 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d 0a  able, but less..
ee40: 20 20 2f 2f 2f 20 61 63 63 75 72 61 74 65 20 61    /// accurate a
ee50: 73 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70 72  s it does not pr
ee60: 6f 76 69 64 65 20 74 69 6d 65 20 64 6f 77 6e 20  ovide time down 
ee70: 74 6f 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20  to fractions of 
ee80: 61 20 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f 2f  a second...  ///
ee90: 20 4a 75 6c 69 61 6e 44 61 79 20 69 73 20 74 68   JulianDay is th
eea0: 65 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61 74  e numeric format
eeb0: 20 74 68 65 20 53 51 4c 69 74 65 20 75 73 65 73   the SQLite uses
eec0: 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20   internally and 
eed0: 69 73 20 61 72 67 75 61 62 6c 79 0d 0a 20 20 2f  is arguably..  /
eee0: 2f 2f 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 70  // the most comp
eef0: 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20  atible with 3rd 
ef00: 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49 74  party tools.  It
ef10: 20 69 73 20 6e 6f 74 20 72 65 61 64 61 62 6c 65   is not readable
ef20: 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20   as text..  /// 
ef30: 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f  without post-pro
ef40: 63 65 73 73 69 6e 67 2e 20 20 54 69 63 6b 73 20  cessing.  Ticks 
ef50: 6c 65 73 73 20 63 6f 6d 70 61 74 69 62 6c 65 20  less compatible 
ef60: 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20 74  with 3rd party t
ef70: 6f 6f 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f 2f  ools that..  ///
ef80: 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62   query the datab
ef90: 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72 73  ase, and renders
efa0: 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 69   the DateTime fi
efb0: 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20 61  eld unreadable a
efc0: 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69  s text..  /// wi
efd0: 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65  thout post-proce
efe0: 73 73 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f 63  ssing.  UnixEpoc
eff0: 68 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74  h is more compat
f000: 69 62 6c 65 20 77 69 74 68 20 55 6e 69 78 20 73  ible with Unix s
f010: 79 73 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20 49  ystems...  /// I
f020: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20  nvariantCulture 
f030: 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66 69  allows the confi
f040: 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72  gured format for
f050: 20 74 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63   the invariant c
f060: 75 6c 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66 6f  ulture..  /// fo
f070: 72 6d 61 74 20 74 6f 20 62 65 20 75 73 65 64 20  rmat to be used 
f080: 61 6e 64 20 69 73 20 68 75 6d 61 6e 20 72 65 61  and is human rea
f090: 64 61 62 6c 65 2e 20 20 43 75 72 72 65 6e 74 43  dable.  CurrentC
f0a0: 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68  ulture allows th
f0b0: 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75  e..  /// configu
f0c0: 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  red format for t
f0d0: 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75  he current cultu
f0e0: 72 65 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e  re to be used an
f0f0: 64 20 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e 0d  d is also human.
f100: 0a 20 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65 2e  .  /// readable.
f110: 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54  ..  ///..  /// T
f120: 68 65 20 70 72 65 66 65 72 72 65 64 20 6f 72 64  he preferred ord
f130: 65 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20 61  er of choosing a
f140: 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74   DateTime format
f150: 20 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20 49   is JulianDay, I
f160: 53 4f 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20 61  SO8601,..  /// a
f170: 6e 64 20 74 68 65 6e 20 54 69 63 6b 73 2e 20 20  nd then Ticks.  
f180: 54 69 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79 20  Ticks is mainly 
f190: 70 72 65 73 65 6e 74 20 66 6f 72 20 6c 65 67 61  present for lega
f1a0: 63 79 20 63 6f 64 65 20 73 75 70 70 6f 72 74 2e  cy code support.
f1b0: 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b  ..  /// </remark
f1c0: 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  s>..  public enu
f1d0: 6d 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  m SQLiteDateForm
f1e0: 61 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ats..  {..    //
f1f0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f200: 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61 6c   /// Use the val
f210: 75 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e 54  ue of DateTime.T
f220: 69 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c 75  icks.  This valu
f230: 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65  e is not recomme
f240: 6e 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20  nded and is not 
f250: 77 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 77  well supported w
f260: 69 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f  ith LINQ...    /
f270: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
f280: 20 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a 20     Ticks = 0,.. 
f290: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f2a0: 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68  ..    /// Use th
f2b0: 65 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d 61  e ISO-8601 forma
f2c0: 74 2e 20 20 55 73 65 73 20 74 68 65 20 22 79 79  t.  Uses the "yy
f2d0: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
f2e0: 73 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72 6d  s.FFFFFFFK" form
f2f0: 61 74 20 66 6f 72 20 55 54 43 20 44 61 74 65 54  at for UTC DateT
f300: 69 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d 0a  ime values and..
f310: 20 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d      /// "yyyy-MM
f320: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
f330: 46 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f 72  FFFF" format for
f340: 20 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65 20   local DateTime 
f350: 76 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f 2f  values)...    //
f360: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f370: 20 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d 0a    ISO8601 = 1,..
f380: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
f390: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 69  >..    /// The i
f3a0: 6e 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65 20  nterval of time 
f3b0: 69 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61 63  in days and frac
f3c0: 74 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20 73  tions of a day s
f3d0: 69 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c 20  ince January 1, 
f3e0: 34 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f 2f  4713 BC...    //
f3f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
f400: 20 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32 2c    JulianDay = 2,
f410: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
f420: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
f430: 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66   whole number of
f440: 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74   seconds since t
f450: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28 4a  he Unix epoch (J
f460: 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29 2e  anuary 1, 1970).
f470: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
f480: 61 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45 70  ary>..    UnixEp
f490: 6f 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f  och = 3,..    //
f4a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f4b0: 20 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72 65   /// Any culture
f4c0: 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74 72  -independent str
f4d0: 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20 74  ing value that t
f4e0: 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
f4f0: 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20  k can interpret 
f500: 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65 54  as a valid DateT
f510: 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ime...    /// </
f520: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e  summary>..    In
f530: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20 3d  variantCulture =
f540: 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   4,..    /// <su
f550: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
f560: 41 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75 65  Any string value
f570: 20 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46   that the .NET F
f580: 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74  ramework can int
f590: 65 72 70 72 65 74 20 61 73 20 61 20 76 61 6c 69  erpret as a vali
f5a0: 64 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e 67  d DateTime using
f5b0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c   the current cul
f5c0: 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ture...    /// <
f5d0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 43  /summary>..    C
f5e0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d 20  urrentCulture = 
f5f0: 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  5,..    /// <sum
f600: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
f610: 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61  he default forma
f620: 74 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76 69  t for this provi
f630: 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  der...    /// </
f640: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65  summary>..    De
f650: 66 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31 0d  fault = ISO8601.
f660: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
f670: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
f680: 68 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d 69  his enum determi
f690: 6e 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20 74  nes how SQLite t
f6a0: 72 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e 61  reats its journa
f6b0: 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c  l file...  /// <
f6c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  /summary>..  ///
f6d0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f   <remarks>..  //
f6e0: 2f 20 42 79 20 64 65 66 61 75 6c 74 20 53 51 4c  / By default SQL
f6f0: 69 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20  ite will create 
f700: 61 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20 6a  and delete the j
f710: 6f 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65 6e  ournal file when
f720: 20 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20 61   needed during a
f730: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20   transaction... 
f740: 20 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66 6f   /// However, fo
f750: 72 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72 73  r some computers
f760: 20 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69 6e   running certain
f770: 20 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e 69   filesystem moni
f780: 74 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74 68  toring tools, th
f790: 65 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20 63  e rapid..  /// c
f7a0: 72 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c 65  reation and dele
f7b0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75 72  tion of the jour
f7c0: 6e 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61 75  nal file can cau
f7d0: 73 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61 6d  se those program
f7e0: 73 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74 6f  s to fail, or to
f7f0: 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20   interfere with 
f800: 53 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a  SQLite...  ///..
f810: 20 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67 72    /// If a progr
f820: 61 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61 6e  am or virus scan
f830: 6e 65 72 20 69 73 20 69 6e 74 65 72 66 65 72 69  ner is interferi
f840: 6e 67 20 77 69 74 68 20 53 51 4c 69 74 65 27 73  ng with SQLite's
f850: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20 79   journal file, y
f860: 6f 75 20 6d 61 79 20 72 65 63 65 69 76 65 20 65  ou may receive e
f870: 72 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61 62  rrors like "unab
f880: 6c 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62  le to open datab
f890: 61 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f  ase file"..  ///
f8a0: 20 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20 61   when starting a
f8b0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49   transaction.  I
f8c0: 66 20 74 68 69 73 20 69 73 20 68 61 70 70 65 6e  f this is happen
f8d0: 69 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e  ing, you may wan
f8e0: 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  t to change the 
f8f0: 64 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c 20  default journal 
f900: 6d 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74 2e  mode to Persist.
f910: 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b  ..  /// </remark
f920: 73 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  s>..  public enu
f930: 6d 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d  m SQLiteJournalM
f940: 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  odeEnum..  {..  
f950: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f960: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
f970: 61 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73 20  ault mode, this 
f980: 63 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f  causes SQLite to
f990: 20 75 73 65 20 74 68 65 20 65 78 69 73 74 69 6e   use the existin
f9a0: 67 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64  g journaling mod
f9b0: 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61  e for the databa
f9c0: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
f9d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66  ummary>..    Def
f9e0: 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20 20  ault = -1,..    
f9f0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fa00: 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
fa10: 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65  ll create and de
fa20: 73 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e 61  stroy the journa
fa30: 6c 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65 64  l file as-needed
fa40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
fa50: 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65 74  mary>..    Delet
fa60: 65 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20  e = 0,..    /// 
fa70: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
fa80: 2f 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73 20  // When this is 
fa90: 73 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c  set, SQLite will
faa0: 20 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e 61   keep the journa
fab0: 6c 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74 65  l file even afte
fac0: 72 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  r a transaction 
fad0: 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20 20  has completed.  
fae0: 49 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77 69  It's contents wi
faf0: 6c 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a 20  ll be erased,.. 
fb00: 20 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6a     /// and the j
fb10: 6f 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20 61  ournal re-used a
fb20: 73 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64 65  s often as neede
fb30: 64 2e 20 20 49 66 20 69 74 20 69 73 20 64 65 6c  d.  If it is del
fb40: 65 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62 65  eted, it will be
fb50: 20 72 65 63 72 65 61 74 65 64 20 74 68 65 20 6e   recreated the n
fb60: 65 78 74 20 74 69 6d 65 20 69 74 20 69 73 20 6e  ext time it is n
fb70: 65 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eeded...    /// 
fb80: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
fb90: 50 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20 20  Persist = 1,..  
fba0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
fbb0: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70  .    /// This op
fbc0: 74 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68  tion disables th
fbd0: 65 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e  e rollback journ
fbe0: 61 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49 6e  al entirely.  In
fbf0: 74 65 72 72 75 70 74 65 64 20 74 72 61 6e 73 61  terrupted transa
fc00: 63 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f 67  ctions or a prog
fc10: 72 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63 61  ram crash can ca
fc20: 75 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20  use database..  
fc30: 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f 6e    /// corruption
fc40: 20 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d 0a   in this mode!..
fc50: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
fc60: 79 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32 2c  y>..    Off = 2,
fc70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
fc80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
fc90: 69 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61 74  ite will truncat
fca0: 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  e the journal fi
fcb0: 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74  le to zero-lengt
fcc0: 68 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 6c  h instead of del
fcd0: 65 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 2f  eting it...    /
fce0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
fcf0: 20 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33 2c     Truncate = 3,
fd00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
fd10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c  ry>..    /// SQL
fd20: 69 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20 74  ite will store t
fd30: 68 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76 6f  he journal in vo
fd40: 6c 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68 69  latile RAM.  Thi
fd50: 73 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f 4f  s saves disk I/O
fd60: 20 62 75 74 20 61 74 20 74 68 65 20 65 78 70 65   but at the expe
fd70: 6e 73 65 20 6f 66 20 64 61 74 61 62 61 73 65 20  nse of database 
fd80: 73 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67  safety and integ
fd90: 72 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49  rity...    /// I
fda0: 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  f the applicatio
fdb0: 6e 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63  n using SQLite c
fdc0: 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69  rashes in the mi
fdd0: 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61  ddle of a transa
fde0: 63 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 4d  ction when the M
fdf0: 45 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e 67  EMORY journaling
fe00: 20 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68   mode is set, th
fe10: 65 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  en the..    /// 
fe20: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69  database file wi
fe30: 6c 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20 67  ll very likely g
fe40: 6f 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20 20  o corrupt...    
fe50: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
fe60: 20 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d      Memory = 4,.
fe70: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
fe80: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69  y>..    /// SQLi
fe90: 74 65 20 75 73 65 73 20 61 20 77 72 69 74 65 2d  te uses a write-
fea0: 61 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65 61  ahead log instea
feb0: 64 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b 20  d of a rollback 
fec0: 6a 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c 65  journal to imple
fed0: 6d 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  ment transaction
fee0: 73 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75 72  s.  The WAL jour
fef0: 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 70  naling mode is p
ff00: 65 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20 20  ersistent;..    
ff10: 2f 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67 20  /// after being 
ff20: 73 65 74 20 69 74 20 73 74 61 79 73 20 69 6e 20  set it stays in 
ff30: 65 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d 75  effect across mu
ff40: 6c 74 69 70 6c 65 20 64 61 74 61 62 61 73 65 20  ltiple database 
ff50: 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20  connections and 
ff60: 61 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61 6e  after closing an
ff70: 64 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65 20  d reopening the 
ff80: 64 61 74 61 62 61 73 65 2e 20 41 20 64 61 74 61  database. A data
ff90: 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e  base..    /// in
ffa0: 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20   WAL journaling 
ffb0: 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65  mode can only be
ffc0: 20 61 63 63 65 73 73 65 64 20 62 79 20 53 51 4c   accessed by SQL
ffd0: 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
ffe0: 30 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20 20  0 or later...   
fff0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10000 0a 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20 20  .    Wal = 5..  
10010 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
10020 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73  ary>..  /// Poss
10030 69 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20  ible values for 
10040 74 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73  the "synchronous
10050 22 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69  " database setti
10060 6e 67 2e 20 20 54 68 69 73 20 73 65 74 74 69 6e  ng.  This settin
10070 67 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20 20  g determines..  
10080 2f 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74 68  /// how often th
10090 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
100a0 65 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79 6e  e calls the xSyn
100b0 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20  c method of the 
100c0 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  VFS...  /// </su
100d0 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
100e0 61 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53 79  al enum SQLiteSy
100f0 6e 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20  nchronousEnum.. 
10100 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
10110 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10120 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61 75  // Use the defau
10130 6c 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22  lt "synchronous"
10140 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69 6e   database settin
10150 67 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74  g.  Currently, t
10160 68 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20  his should be.. 
10170 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61 6d       /// the sam
10180 65 20 61 73 20 75 73 69 6e 67 20 74 68 65 20 46  e as using the F
10190 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  ULL mode...     
101a0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
101b0 0a 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d  .      Default =
101c0 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   -1,....      //
101d0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
101e0 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
101f0 61 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74 69  ase engine conti
10200 6e 75 65 73 20 77 69 74 68 6f 75 74 20 73 79 6e  nues without syn
10210 63 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73 20  cing as soon as 
10220 69 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a 20  it has handed.. 
10230 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f 66       /// data of
10240 66 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74 69  f to the operati
10250 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20 74  ng system.  If t
10260 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72  he application r
10270 75 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a 20  unning SQLite.. 
10280 20 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65 73       /// crashes
10290 2c 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20  , the data will 
102a0 62 65 20 73 61 66 65 2c 20 62 75 74 20 74 68 65  be safe, but the
102b0 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74 20   database might 
102c0 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64  become corrupted
102d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74  ..      /// if t
102e0 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
102f0 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20 74  tem crashes or t
10300 68 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73 65  he computer lose
10310 73 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20 74  s power before t
10320 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  hat..      /// d
10330 61 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69  ata has been wri
10340 74 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b  tten to the disk
10350 20 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20 20   surface...     
10360 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10370 0a 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c 0d  .      Off = 0,.
10380 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
10390 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
103a0 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65  / The database e
103b0 6e 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c  ngine will still
103c0 20 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f 73   sync at the mos
103d0 74 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e  t critical momen
103e0 74 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20 2f  ts, but..      /
103f0 2f 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74 68  // less often th
10400 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e  an in FULL mode.
10410 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65 72    There is a ver
10420 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68 20  y small (though 
10430 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20 20  non-zero)..     
10440 20 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61 74   /// chance that
10450 20 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65   a power failure
10460 20 61 74 20 6a 75 73 74 20 74 68 65 20 77 72 6f   at just the wro
10470 6e 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f  ng time could co
10480 72 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20 20  rrupt the..     
10490 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69 6e   /// database in
104a0 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20   NORMAL mode... 
104b0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
104c0 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d 61  ry>..      Norma
104d0 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20  l = 1,....      
104e0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
104f0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74       /// The dat
10500 61 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c  abase engine wil
10510 6c 20 75 73 65 20 74 68 65 20 78 53 79 6e 63 20  l use the xSync 
10520 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46  method of the VF
10530 53 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74  S to ensure that
10540 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 20  ..      /// all 
10550 63 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65 6c  content is safel
10560 79 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65  y written to the
10570 20 64 69 73 6b 20 73 75 72 66 61 63 65 20 70 72   disk surface pr
10580 69 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69 6e  ior to continuin
10590 67 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  g...      /// Th
105a0 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 20  is ensures that 
105b0 61 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  an operating sys
105c0 74 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f 77  tem crash or pow
105d0 65 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c 20  er failure will 
105e0 6e 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  not..      /// c
105f0 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61 62  orrupt the datab
10600 61 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68  ase.  FULL synch
10610 72 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20 73  ronous is very s
10620 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20 61  afe, but it is a
10630 6c 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73  lso..      /// s
10640 6c 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f  lower...      //
10650 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10660 20 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20 20      Full = 2..  
10670 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
10680 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
10690 72 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61 6e  requested comman
106a0 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65  d execution type
106b0 2e 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c 73  .  This controls
106c0 20 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f 66   which method of
106d0 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65   the..  /// <see
106e0 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d   cref="SQLiteCom
106f0 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74 20  mand" /> object 
10700 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d  will be called..
10710 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
10720 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
10730 20 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79   SQLiteExecuteTy
10740 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  pe..  {..      /
10750 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10760 20 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69      /// Do nothi
10770 6e 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20 77  ng.  No method w
10780 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  ill be called...
10790 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
107a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
107b0 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 0,....      /
107c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
107d0 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d      /// The comm
107e0 61 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65 63  and is not expec
107f0 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20  ted to return a 
10800 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20  result -OR- the 
10810 72 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a 20  result is not.. 
10820 20 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64 2e       /// needed.
10830 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d    The <see cref=
10840 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45  "SQLiteCommand.E
10850 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29  xecuteNonQuery()
10860 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f  " /> or..      /
10870 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  // <see cref="SQ
10880 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63  LiteCommand.Exec
10890 75 74 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d 6d  uteNonQuery(Comm
108a0 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
108b0 20 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20    method..      
108c0 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  /// will be call
108d0 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ed...      /// <
108e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
108f0 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d 0a   NonQuery = 1,..
10900 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
10910 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
10920 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20   The command is 
10930 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75  expected to retu
10940 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73 75  rn a scalar resu
10950 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75  lt -OR- the resu
10960 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20  lt should..     
10970 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64 20   /// be limited 
10980 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73 75  to a scalar resu
10990 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72  lt.  The <see cr
109a0 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e  ef="SQLiteComman
109b0 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72 28  d.ExecuteScalar(
109c0 29 22 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  )" />..      ///
109d0 20 6f 72 20 3c 73 65 65 20 63 72 65 66 3d 22 53   or <see cref="S
109e0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
109f0 63 75 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d 61  cuteScalar(Comma
10a00 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20  ndBehavior)" /> 
10a10 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20  method will..   
10a20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64     /// be called
10a30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
10a40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53  ummary>..      S
10a50 63 61 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20 20  calar = 2,....  
10a60 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10a70 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10a80 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65   command is expe
10a90 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 3c  cted to return <
10aa0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
10ab0 44 61 74 61 52 65 61 64 65 72 22 20 2f 3e 20 72  DataReader" /> r
10ac0 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f  esult...      //
10ad0 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
10ae0 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45  "SQLiteCommand.E
10af0 78 65 63 75 74 65 52 65 61 64 65 72 28 29 22 20  xecuteReader()" 
10b00 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  /> or..      ///
10b10 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
10b20 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74  teCommand.Execut
10b30 65 52 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64 42  eReader(CommandB
10b40 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74  ehavior)" /> met
10b50 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20  hod will..      
10b60 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a  /// be called...
10b70 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10b80 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64  ary>..      Read
10b90 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20  er = 3,....     
10ba0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10bb0 20 20 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68        /// Use th
10bc0 65 20 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e  e default comman
10bd0 64 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65  d execution type
10be0 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20 76 61  .  Using this va
10bf0 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65 0d  lue is the same.
10c00 0a 20 20 20 20 20 20 2f 2f 2f 20 61 73 20 75 73  .      /// as us
10c10 69 6e 67 20 74 68 65 20 3c 73 65 65 20 63 72 65  ing the <see cre
10c20 66 3d 22 53 51 4c 69 74 65 45 78 65 63 75 74 65  f="SQLiteExecute
10c30 54 79 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20 2f  Type.NonQuery" /
10c40 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  > value...      
10c50 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10c60 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
10c70 4e 6f 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44 4f  NonQuery /* TODO
10c80 3a 20 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f 20  : Good default? 
10c90 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  */..  }....  ///
10ca0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
10cb0 2f 20 54 68 65 20 61 63 74 69 6f 6e 20 63 6f 64  / The action cod
10cc0 65 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  e responsible fo
10cd0 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61  r the current ca
10ce0 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68  ll into the auth
10cf0 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c  orizer...  /// <
10d00 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
10d10 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41  lic enum SQLiteA
10d20 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
10d30 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ode..  {..      
10d40 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10d50 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74 69       /// No acti
10d60 6f 6e 20 69 73 20 62 65 69 6e 67 20 70 65 72 66  on is being perf
10d70 6f 72 6d 65 64 2e 20 20 54 68 69 73 20 76 61 6c  ormed.  This val
10d80 75 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65  ue should not be
10d90 20 75 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20   used from..    
10da0 20 20 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20 63    /// external c
10db0 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ode...      /// 
10dc0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10dd0 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d 0a    None = -1,....
10de0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
10df0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e  ry>..      /// N
10e00 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d 0a  o longer used...
10e10 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10e20 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70 79  ary>..      Copy
10e30 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 0,....      /
10e40 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10e50 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78      /// An index
10e60 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
10e70 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
10e80 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
10e90 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20   are the..      
10ea0 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20 61  /// index name a
10eb0 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
10ec0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a 20  e...      ///.. 
10ed0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
10ee0 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
10ef0 65 49 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a 20  eIndex = 1,.... 
10f00 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
10f10 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
10f20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72  table will be cr
10f30 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
10f40 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
10f50 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20  ments are the.. 
10f60 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e       /// table n
10f70 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
10f80 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
10f90 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10fa0 20 20 20 43 72 65 61 74 65 54 61 62 6c 65 20 3d     CreateTable =
10fb0 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   2,....      ///
10fc0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
10fd0 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72    /// A temporar
10fe0 79 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  y index will be 
10ff0 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
11000 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
11010 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
11020 2f 2f 20 61 72 65 20 74 68 65 20 69 6e 64 65 78  // are the index
11030 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
11040 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
11050 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11060 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
11070 70 49 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a 20  pIndex = 3,.... 
11080 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11090 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
110a0 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20  temporary table 
110b0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
110c0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
110d0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
110e0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
110f0 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
11100 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
11110 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
11120 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
11130 61 74 65 54 65 6d 70 54 61 62 6c 65 20 3d 20 34  ateTempTable = 4
11140 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
11150 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11160 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
11170 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20  trigger will be 
11180 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
11190 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
111a0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
111b0 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67 67  // are the trigg
111c0 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20  er name and the 
111d0 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20  table name...   
111e0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
111f0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
11200 65 6d 70 54 72 69 67 67 65 72 20 3d 20 35 2c 0d  empTrigger = 5,.
11210 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
11220 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11230 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69  / A temporary vi
11240 65 77 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74  ew will be creat
11250 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
11260 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
11270 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f  ts are..      //
11280 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20  / the view name 
11290 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
112a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
112b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43  ummary>..      C
112c0 72 65 61 74 65 54 65 6d 70 56 69 65 77 20 3d 20  reateTempView = 
112d0 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
112e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
112f0 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20 77   /// A trigger w
11300 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
11310 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
11320 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
11330 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
11340 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61  / trigger name a
11350 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  nd the table nam
11360 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
11370 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11380 43 72 65 61 74 65 54 72 69 67 67 65 72 20 3d 20  CreateTrigger = 
11390 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
113a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
113b0 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c   /// A view will
113c0 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68   be created.  Th
113d0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
113e0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
113f0 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20  the view..      
11400 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  /// name and a n
11410 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
11420 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11430 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56 69  ..      CreateVi
11440 65 77 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20  ew = 8,....     
11450 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11460 20 20 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c 45        /// A DELE
11470 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  TE statement wil
11480 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
11490 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
114a0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
114b0 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
114c0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
114d0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
114e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
114f0 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65 74  ry>..      Delet
11500 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 9,....      
11510 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11520 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65       /// An inde
11530 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  x will be droppe
11540 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
11550 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
11560 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20  s are the..     
11570 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20   /// index name 
11580 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
11590 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
115a0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
115b0 20 44 72 6f 70 49 6e 64 65 78 20 3d 20 31 30 2c   DropIndex = 10,
115c0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
115d0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
115e0 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
115f0 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
11600 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
11610 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
11620 68 65 20 74 61 62 6c 65 73 0d 0a 20 20 20 20 20  he tables..     
11630 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20   /// name and a 
11640 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
11650 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11660 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 61 62  >..      DropTab
11670 6c 65 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20  le = 11,....    
11680 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11690 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
116a0 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69 6c  porary index wil
116b0 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
116c0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
116d0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
116e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
116f0 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
11700 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
11710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
11720 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70  ary>..      Drop
11730 54 65 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c 0d  TempIndex = 12,.
11740 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
11750 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
11760 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 61  / A temporary ta
11770 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70  ble will be drop
11780 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ped.  The action
11790 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
117a0 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f  nts are..      /
117b0 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  // the table nam
117c0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
117d0 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
117e0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
117f0 20 44 72 6f 70 54 65 6d 70 54 61 62 6c 65 20 3d   DropTempTable =
11800 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   13,....      //
11810 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11820 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
11830 72 79 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20  ry trigger will 
11840 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
11850 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
11860 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
11870 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72    /// are the tr
11880 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74  igger name and t
11890 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
118a0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
118b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70  ary>..      Drop
118c0 54 65 6d 70 54 72 69 67 67 65 72 20 3d 20 31 34  TempTrigger = 14
118d0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
118e0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
118f0 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
11900 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f  view will be dro
11910 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
11920 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
11930 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20  ents are..      
11940 2f 2f 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d  /// the view nam
11950 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
11960 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
11970 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11980 20 44 72 6f 70 54 65 6d 70 56 69 65 77 20 3d 20   DropTempView = 
11990 31 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  15,....      ///
119a0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
119b0 20 20 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20    /// A trigger 
119c0 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
119d0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
119e0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
119f0 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
11a00 2f 2f 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  // trigger name 
11a10 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
11a20 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
11a30 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11a40 20 44 72 6f 70 54 72 69 67 67 65 72 20 3d 20 31   DropTrigger = 1
11a50 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  6,....      /// 
11a60 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
11a70 20 2f 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c   /// A view will
11a80 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
11a90 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
11aa0 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
11ab0 74 68 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20  the view..      
11ac0 2f 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  /// name and a n
11ad0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
11ae0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11af0 0d 0a 20 20 20 20 20 20 44 72 6f 70 56 69 65 77  ..      DropView
11b00 20 3d 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 17,....      
11b10 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
11b20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53 45       /// An INSE
11b30 52 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  RT statement wil
11b40 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
11b50 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
11b60 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
11b70 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
11b80 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
11b90 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
11ba0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11bb0 72 79 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65 72  ry>..      Inser
11bc0 74 20 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20 20  t = 18,....     
11bd0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11be0 20 20 20 20 20 20 2f 2f 2f 20 41 20 50 52 41 47        /// A PRAG
11bf0 4d 41 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  MA statement wil
11c00 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
11c10 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
11c20 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
11c30 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
11c40 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 50 52 41   name of the PRA
11c50 47 4d 41 20 61 6e 64 20 74 68 65 20 6e 65 77 20  GMA and the new 
11c60 76 61 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c 20  value or a null 
11c70 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
11c80 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
11c90 20 20 20 20 50 72 61 67 6d 61 20 3d 20 31 39 2c      Pragma = 19,
11ca0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
11cb0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11cc0 2f 2f 20 41 20 74 61 62 6c 65 20 63 6f 6c 75 6d  // A table colum
11cd0 6e 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e 20  n will be read. 
11ce0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
11cf0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
11d00 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
11d10 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  / table name and
11d20 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
11d30 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
11d40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52  ummary>..      R
11d50 65 61 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20 20  ead = 20,....   
11d60 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11d70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 45  ..      /// A SE
11d80 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 77  LECT statement w
11d90 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e  ill be executed.
11da0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
11db0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
11dc0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 62  .      /// are b
11dd0 6f 74 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e  oth null values.
11de0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11df0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 65  mmary>..      Se
11e00 6c 65 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20 20  lect = 21,....  
11e10 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11e20 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
11e30 72 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20  ransaction will 
11e40 62 65 20 73 74 61 72 74 65 64 2c 20 63 6f 6d 6d  be started, comm
11e50 69 74 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64  itted, or rolled
11e60 20 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20   back.  The..   
11e70 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70     /// action-sp
11e80 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
11e90 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66   are the name of
11ea0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28   the operation (
11eb0 42 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f  BEGIN,..      //
11ec0 2f 20 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f 4c  / COMMIT, or ROL
11ed0 4c 42 41 43 4b 29 20 61 6e 64 20 61 20 6e 75 6c  LBACK) and a nul
11ee0 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
11ef0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11f00 20 20 20 20 20 20 54 72 61 6e 73 61 63 74 69 6f        Transactio
11f10 6e 20 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20 20  n = 22,....     
11f20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
11f30 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50 44        /// An UPD
11f40 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ATE statement wi
11f50 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
11f60 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
11f70 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
11f80 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
11f90 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64  e table name and
11fa0 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65   the column name
11fb0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
11fc0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
11fd0 70 64 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a 20  pdate = 23,.... 
11fe0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11ff0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
12000 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65  database will be
12010 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65   attached to the
12020 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68   connection.  Th
12030 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
12040 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67  c..      /// arg
12050 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 64  uments are the d
12060 61 74 61 62 61 73 65 20 66 69 6c 65 20 6e 61 6d  atabase file nam
12070 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
12080 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
12090 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
120a0 20 41 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a 0d   Attach = 24,...
120b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
120c0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
120d0 41 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20  A database will 
120e0 62 65 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d  be detached from
120f0 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
12100 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
12110 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f  cific..      ///
12120 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
12130 68 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65  he database name
12140 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
12150 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
12160 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12170 44 65 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d 0a  Detach = 25,....
12180 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12190 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
121a0 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 20 74  he schema of a t
121b0 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c 74  able will be alt
121c0 65 72 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ered.  The actio
121d0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
121e0 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
121f0 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  are the database
12200 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
12210 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
12220 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12230 0a 20 20 20 20 20 20 41 6c 74 65 72 54 61 62 6c  .      AlterTabl
12240 65 20 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20 20  e = 26,....     
12250 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12260 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64        /// An ind
12270 65 78 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74  ex will be delet
12280 65 64 20 61 6e 64 20 74 68 65 6e 20 72 65 63 72  ed and then recr
12290 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
122a0 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20  on-specific..   
122b0 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
122c0 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e   are the index n
122d0 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
122e0 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
122f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12300 20 20 20 52 65 69 6e 64 65 78 20 3d 20 32 37 2c     Reindex = 27,
12310 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
12320 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
12330 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
12340 62 65 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20 67  be analyzed to g
12350 61 74 68 65 72 73 20 73 74 61 74 69 73 74 69 63  athers statistic
12360 73 20 61 62 6f 75 74 20 69 74 2e 20 20 54 68 65  s about it.  The
12370 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69  ..      /// acti
12380 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
12390 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 74 61  ments are the ta
123a0 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
123b0 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
123c0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
123d0 0d 0a 20 20 20 20 20 20 41 6e 61 6c 79 7a 65 20  ..      Analyze 
123e0 3d 20 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 28,....      /
123f0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12400 20 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61      /// A virtua
12410 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20  l table will be 
12420 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
12430 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
12440 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20  guments are..   
12450 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65     /// the table
12460 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f   name and the mo
12470 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  dule name...    
12480 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12490 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 56 74  ..      CreateVt
124a0 61 62 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20 20  able = 29,....  
124b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
124c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
124d0 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
124e0 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54  l be dropped.  T
124f0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
12500 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
12510 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
12520 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
12530 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d  he module name..
12540 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12550 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
12560 70 56 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a 0d  pVtable = 30,...
12570 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
12580 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
12590 41 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 77  A SQL function w
125a0 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20 20  ill be called.  
125b0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
125c0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
125d0 65 20 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  e a..      /// n
125e0 75 6c 6c 20 76 61 6c 75 65 20 61 6e 64 20 74 68  ull value and th
125f0 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 2e  e function name.
12600 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
12610 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75  mmary>..      Fu
12620 6e 63 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d 0a  nction = 31,....
12630 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
12640 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
12650 20 73 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c 20   savepoint will 
12660 62 65 20 63 72 65 61 74 65 64 2c 20 72 65 6c 65  be created, rele
12670 61 73 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20  ased, or rolled 
12680 62 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20  back.  The..    
12690 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65    /// action-spe
126a0 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
126b0 61 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  are the name of 
126c0 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28 42  the operation (B
126d0 45 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f  EGIN,..      ///
126e0 20 52 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f 4c   RELEASE, or ROL
126f0 4c 42 41 43 4b 29 20 61 6e 64 20 74 68 65 20 73  LBACK) and the s
12700 61 76 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d 0a  avepoint name...
12710 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
12720 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 61 76 65  ary>..      Save
12730 70 6f 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a 20  point = 32,.... 
12740 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
12750 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
12760 72 65 63 75 72 73 69 76 65 20 71 75 65 72 79 20  recursive query 
12770 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64  will be executed
12780 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
12790 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
127a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20  ..      /// are 
127b0 74 77 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e  two null values.
127c0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
127d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65  mmary>..      Re
127e0 63 75 72 73 69 76 65 20 3d 20 33 33 0d 0a 20 20  cursive = 33..  
127f0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
12800 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
12810 72 65 74 75 72 6e 20 63 6f 64 65 20 66 6f 72 20  return code for 
12820 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c  the current call
12830 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72   into the author
12840 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  izer...  /// </s
12850 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
12860 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74  c enum SQLiteAut
12870 68 6f 72 69 7a 65 72 52 65 74 75 72 6e 43 6f 64  horizerReturnCod
12880 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
12890 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
128a0 20 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69 6f     /// The actio
128b0 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c 6f 77 65  n will be allowe
128c0 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
128d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
128e0 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20  Ok = 0,....     
128f0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12900 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 76        /// The ov
12910 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20 77 69 6c  erall action wil
12920 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 20  l be disallowed 
12930 61 6e 64 20 61 6e 20 65 72 72 6f 72 20 6d 65 73  and an error mes
12940 73 61 67 65 20 77 69 6c 6c 20 62 65 0d 0a 20 20  sage will be..  
12950 20 20 20 20 2f 2f 2f 20 72 65 74 75 72 6e 65 64      /// returned
12960 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79 20   from the query 
12970 70 72 65 70 61 72 61 74 69 6f 6e 20 6d 65 74 68  preparation meth
12980 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  od...      /// <
12990 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
129a0 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20   Deny = 1,....  
129b0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
129c0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
129d0 20 73 70 65 63 69 66 69 63 20 61 63 74 69 6f 6e   specific action
129e0 20 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f   will be disallo
129f0 77 65 64 3b 20 68 6f 77 65 76 65 72 2c 20 74 68  wed; however, th
12a00 65 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e  e overall action
12a10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69 6c 6c  ..      /// will
12a20 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54 68 65 20   continue.  The 
12a30 65 78 61 63 74 20 65 66 66 65 63 74 73 20 6f 66  exact effects of
12a40 20 74 68 69 73 20 72 65 74 75 72 6e 20 63 6f 64   this return cod
12a50 65 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67  e vary depending
12a60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 6e 20 74  ..      /// on t
12a70 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74 69  he specific acti
12a80 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65 66 65 72  on, please refer
12a90 20 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63   to the SQLite c
12aa0 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a 20 20 20  ore library..   
12ab0 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65 6e 74 61     /// documenta
12ac0 74 69 6f 6e 20 66 6f 72 20 66 75 74 68 65 72 20  tion for futher 
12ad0 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  details...      
12ae0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12af0 20 20 20 20 20 20 49 67 6e 6f 72 65 20 3d 20 32        Ignore = 2
12b00 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
12b10 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
12b20 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74 65 72  Class used inter
12b30 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72 6d 69  nally to determi
12b40 6e 65 20 74 68 65 20 64 61 74 61 74 79 70 65 20  ne the datatype 
12b50 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61  of a column in a
12b60 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 2f 2f   resultset..  //
12b70 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
12b80 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
12b90 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79 70 65  class SQLiteType
12ba0 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ..  {..    /// <
12bb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
12bc0 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f 66 20  / The DbType of 
12bd0 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 44  the column, or D
12be0 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69 66 20  bType.Object if 
12bf0 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74  it cannot be det
12c00 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f  ermined..    ///
12c10 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
12c20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65   internal DbType
12c30 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20   Type;..    /// 
12c40 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
12c50 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74 79 20  // The affinity 
12c60 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75 73 65  of a column, use
12c70 64 20 66 6f 72 20 65 78 70 72 65 73 73 69 6f 6e  d for expression
12c80 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65 20 69  s or when Type i
12c90 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 0d  s DbType.Object.
12ca0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
12cb0 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
12cc0 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 41  l TypeAffinity A
12cd0 66 66 69 6e 69 74 79 3b 0d 0a 0d 0a 20 20 20 20  ffinity;....    
12ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12d30 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
12d40 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72  ..    /// Constr
12d50 75 63 74 73 20 61 20 64 65 66 61 75 6c 74 20 69  ucts a default i
12d60 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
12d70 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  type...    /// <
12d80 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
12d90 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65  ublic SQLiteType
12da0 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  ()..    {..     
12db0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
12dc0 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
12dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
12e20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12e30 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74 72 75 63      /// Construc
12e40 74 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ts an instance o
12e50 66 20 74 68 69 73 20 74 79 70 65 20 77 69 74 68  f this type with
12e60 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66   the specified f
12e70 69 65 6c 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20  ield values...  
12e80 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12e90 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
12ea0 20 6e 61 6d 65 3d 22 61 66 66 69 6e 69 74 79 22   name="affinity"
12eb0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 74  >..    /// The t
12ec0 79 70 65 20 61 66 66 69 6e 69 74 79 20 74 6f 20  ype affinity to 
12ed0 75 73 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20  use for the new 
12ee0 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
12ef0 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
12f00 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
12f10 3d 22 74 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f  ="type">..    //
12f20 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20 74  / The database t
12f30 79 70 65 20 74 6f 20 75 73 65 20 66 6f 72 20 74  ype to use for t
12f40 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e  he new instance.
12f50 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
12f60 6d 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53  m>..    public S
12f70 51 4c 69 74 65 54 79 70 65 28 0d 0a 20 20 20 20  QLiteType(..    
12f80 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 61    TypeAffinity a
12f90 66 66 69 6e 69 74 79 2c 0d 0a 20 20 20 20 20 20  ffinity,..      
12fa0 44 62 54 79 70 65 20 74 79 70 65 0d 0a 20 20 20  DbType type..   
12fb0 20 20 20 29 0d 0a 20 20 20 20 20 20 3a 20 74 68     )..      : th
12fc0 69 73 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  is()..    {..   
12fd0 20 20 20 74 68 69 73 2e 41 66 66 69 6e 69 74 79     this.Affinity
12fe0 20 3d 20 61 66 66 69 6e 69 74 79 3b 0d 0a 20 20   = affinity;..  
12ff0 20 20 20 20 74 68 69 73 2e 54 79 70 65 20 3d 20      this.Type = 
13000 74 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  type;..    }..  
13010 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  }....  /////////
13020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13060 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e  ////....  intern
13070 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
13080 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 0d  SQLiteDbTypeMap.
13090 0a 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f 6e  .      : Diction
130a0 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69  ary<string, SQLi
130b0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
130c0 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 23 72 65  ..  {..      #re
130d0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
130e0 61 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65  a..      private
130f0 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79   Dictionary<DbTy
13100 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65  pe, SQLiteDbType
13110 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72 73 65  Mapping> reverse
13120 3b 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  ;..      #endreg
13130 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
13140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13180 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13190 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
131a0 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
131b0 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
131c0 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20 20  DbTypeMap()..   
131d0 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e 65         : base(ne
131e0 77 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  w TypeNameString
131f0 43 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20 20 20  Comparer())..   
13200 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13210 72 65 76 65 72 73 65 20 3d 20 6e 65 77 20 44 69  reverse = new Di
13220 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c  ctionary<DbType,
13230 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
13240 70 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20  ping>();..      
13250 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
13260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
132b0 62 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70  blic SQLiteDbTyp
132c0 65 4d 61 70 28 0d 0a 20 20 20 20 20 20 20 20 20  eMap(..         
132d0 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c   IEnumerable<SQL
132e0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
132f0 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20  > collection..  
13300 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
13310 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20       : this().. 
13320 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13330 20 20 41 64 64 28 63 6f 6c 6c 65 63 74 69 6f 6e    Add(collection
13340 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20  );..      }..   
13350 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13360 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  .      /////////
13370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133b0 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f  ....      #regio
133c0 6e 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74  n System.Collect
133d0 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 44 69 63  ions.Generic.Dic
133e0 74 69 6f 6e 61 72 79 20 22 4f 76 65 72 72 69 64  tionary "Overrid
133f0 65 73 22 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  es"..      publi
13400 63 20 6e 65 77 20 69 6e 74 20 43 6c 65 61 72 28  c new int Clear(
13410 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
13420 20 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74        int result
13430 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = 0;....       
13440 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20 21     if (reverse !
13450 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13460 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13470 20 20 20 20 72 65 73 75 6c 74 20 2b 3d 20 72 65      result += re
13480 76 65 72 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20  verse.Count;..  
13490 20 20 20 20 20 20 20 20 20 20 20 20 72 65 76 65              reve
134a0 72 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20  rse.Clear();..  
134b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
134c0 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 2b 3d         result +=
134d0 20 62 61 73 65 2e 43 6f 75 6e 74 3b 0d 0a 20 20   base.Count;..  
134e0 20 20 20 20 20 20 20 20 62 61 73 65 2e 43 6c 65          base.Cle
134f0 61 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ar();....       
13500 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
13510 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
13520 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13530 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13580 0a 0d 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e  ...      #region
13590 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
135a0 70 69 6e 67 20 48 65 6c 70 65 72 20 4d 65 74 68  ping Helper Meth
135b0 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69  ods..      publi
135c0 63 20 76 6f 69 64 20 41 64 64 28 0d 0a 20 20 20  c void Add(..   
135d0 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62         IEnumerab
135e0 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d  le<SQLiteDbTypeM
135f0 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69  apping> collecti
13600 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  on..          ).
13610 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
13620 20 20 20 20 69 66 20 28 63 6f 6c 6c 65 63 74 69      if (collecti
13630 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
13640 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
13650 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 6c   new ArgumentNul
13660 6c 45 78 63 65 70 74 69 6f 6e 28 22 63 6f 6c 6c  lException("coll
13670 65 63 74 69 6f 6e 22 29 3b 0d 0a 0d 0a 20 20 20  ection");....   
13680 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20 28         foreach (
13690 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
136a0 69 6e 67 20 69 74 65 6d 20 69 6e 20 63 6f 6c 6c  ing item in coll
136b0 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20  ection)..       
136c0 20 20 20 20 20 20 20 41 64 64 28 69 74 65 6d 29         Add(item)
136d0 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
136e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13730 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f  .      public vo
13740 69 64 20 41 64 64 28 53 51 4c 69 74 65 44 62 54  id Add(SQLiteDbT
13750 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 29  ypeMapping item)
13760 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
13770 20 20 20 20 20 69 66 20 28 69 74 65 6d 20 3d 3d       if (item ==
13780 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
13790 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
137a0 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
137b0 70 74 69 6f 6e 28 22 69 74 65 6d 22 29 3b 0d 0a  ption("item");..
137c0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
137d0 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 20 3d 3d  item.typeName ==
137e0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
137f0 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
13800 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f  ArgumentExceptio
13810 6e 28 22 69 74 65 6d 20 74 79 70 65 20 6e 61 6d  n("item type nam
13820 65 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c  e cannot be null
13830 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ");....         
13840 20 62 61 73 65 2e 41 64 64 28 69 74 65 6d 2e 74   base.Add(item.t
13850 79 70 65 4e 61 6d 65 2c 20 69 74 65 6d 29 3b 0d  ypeName, item);.
13860 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ...          if 
13870 28 69 74 65 6d 2e 70 72 69 6d 61 72 79 29 0d 0a  (item.primary)..
13880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13890 76 65 72 73 65 2e 41 64 64 28 69 74 65 6d 2e 64  verse.Add(item.d
138a0 61 74 61 54 79 70 65 2c 20 69 74 65 6d 29 3b 0d  ataType, item);.
138b0 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
138c0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
138d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
138e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
138f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13920 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44  .      #region D
13930 62 54 79 70 65 20 48 65 6c 70 65 72 20 4d 65 74  bType Helper Met
13940 68 6f 64 73 0d 0a 20 20 20 20 20 20 70 75 62 6c  hods..      publ
13950 69 63 20 62 6f 6f 6c 20 43 6f 6e 74 61 69 6e 73  ic bool Contains
13960 4b 65 79 28 44 62 54 79 70 65 20 6b 65 79 29 0d  Key(DbType key).
13970 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
13980 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 20      if (reverse 
13990 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
139a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
139b0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
139c0 20 20 20 72 65 74 75 72 6e 20 72 65 76 65 72 73     return revers
139d0 65 2e 43 6f 6e 74 61 69 6e 73 4b 65 79 28 6b 65  e.ContainsKey(ke
139e0 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  y);..      }....
139f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13a40 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  ...      public 
13a50 62 6f 6f 6c 20 54 72 79 47 65 74 56 61 6c 75 65  bool TryGetValue
13a60 28 44 62 54 79 70 65 20 6b 65 79 2c 20 6f 75 74  (DbType key, out
13a70 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
13a80 70 69 6e 67 20 76 61 6c 75 65 29 0d 0a 20 20 20  ping value)..   
13a90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13aa0 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e  if (reverse == n
13ab0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
13ac0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13ad0 20 76 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a   value = null;..
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13af0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
13b00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
13b10 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 76        return rev
13b20 65 72 73 65 2e 54 72 79 47 65 74 56 61 6c 75 65  erse.TryGetValue
13b30 28 6b 65 79 2c 20 6f 75 74 20 76 61 6c 75 65 29  (key, out value)
13b40 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
13b50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
13b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13ba0 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f  .      public bo
13bb0 6f 6c 20 52 65 6d 6f 76 65 28 44 62 54 79 70 65  ol Remove(DbType
13bc0 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a   key)..      {..
13bd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
13be0 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
13bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13c00 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13c10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13c20 72 65 76 65 72 73 65 2e 52 65 6d 6f 76 65 28 6b  reverse.Remove(k
13c30 65 79 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20  ey);..      }.. 
13c40 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
13c50 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f  .  }....  //////
13c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ca0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74  ///////....  int
13cb0 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61  ernal sealed cla
13cc0 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ss SQLiteDbTypeM
13cd0 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20 20 20  apping..  {..   
13ce0 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
13cf0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 0d 0a  DbTypeMapping(..
13d00 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
13d10 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20  ewTypeName,..   
13d20 20 20 20 20 20 44 62 54 79 70 65 20 6e 65 77 44       DbType newD
13d30 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20 20 20  ataType,..      
13d40 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d 61 72    bool newPrimar
13d50 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  y..        )..  
13d60 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 4e    {..      typeN
13d70 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e 61 6d  ame = newTypeNam
13d80 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61 54 79  e;..      dataTy
13d90 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79 70 65  pe = newDataType
13da0 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61 72 79  ;..      primary
13db0 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b 0d 0a   = newPrimary;..
13dc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74      }....    int
13dd0 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74 79 70  ernal string typ
13de0 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e 74 65  eName;..    inte
13df0 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61 74 61  rnal DbType data
13e00 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72  Type;..    inter
13e10 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61 72 79  nal bool primary
13e20 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e 74 65  ;..  }....  inte
13e30 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
13e40 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67  s TypeNameString
13e50 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71 75 61  Comparer : IEqua
13e60 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72  lityComparer<str
13e70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 23  ing>..  {..    #
13e80 72 65 67 69 6f 6e 20 49 45 71 75 61 6c 69 74 79  region IEquality
13e90 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e  Comparer<string>
13ea0 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70 75   Members..    pu
13eb0 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  blic bool Equals
13ec0 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20  (..      string 
13ed0 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20 73 74 72  left,..      str
13ee0 69 6e 67 20 72 69 67 68 74 0d 0a 20 20 20 20 20  ing right..     
13ef0 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
13f00 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45   return String.E
13f10 71 75 61 6c 73 28 6c 65 66 74 2c 20 72 69 67 68  quals(left, righ
13f20 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69  t, StringCompari
13f30 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72  son.OrdinalIgnor
13f40 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a  eCase);..    }..
13f50 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
13f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fa0 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  /....    public 
13fb0 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28  int GetHashCode(
13fc0 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 76  ..      string v
13fd0 61 6c 75 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20  alue..      ).. 
13fe0 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a     {..      //..
13ff0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
14000 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67 20 74 68  he only thing th
14010 61 74 20 77 65 20 6d 75 73 74 20 67 75 61 72 61  at we must guara
14020 6e 74 65 65 20 68 65 72 65 2c 20 61 63 63 6f 72  ntee here, accor
14030 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20  ding..      //  
14040 20 20 20 20 20 74 6f 20 74 68 65 20 4d 53 44 4e       to the MSDN
14050 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
14060 6f 72 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70  or IEqualityComp
14070 61 72 65 72 2c 20 69 73 0d 0a 20 20 20 20 20 20  arer, is..      
14080 2f 2f 20 20 20 20 20 20 20 74 68 61 74 20 66 6f  //       that fo
14090 72 20 74 77 6f 20 67 69 76 65 6e 20 73 74 72 69  r two given stri
140a0 6e 67 73 2c 20 69 66 20 45 71 75 61 6c 73 20 72  ngs, if Equals r
140b0 65 74 75 72 6e 20 74 72 75 65 20 74 68 65 6e 0d  eturn true then.
140c0 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20  .      //       
140d0 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20  the two strings 
140e0 6d 75 73 74 20 68 61 73 68 20 74 6f 20 74 68 65  must hash to the
140f0 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d 0a 20 20   same value...  
14100 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 66      //..      if
14110 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
14120 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f  ..#if !PLATFORM_
14130 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b  COMPACTFRAMEWORK
14140 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
14150 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 49 6e   value.ToLowerIn
14160 76 61 72 69 61 6e 74 28 29 2e 47 65 74 48 61 73  variant().GetHas
14170 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c 73 65 0d  hCode();..#else.
14180 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
14190 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 28 29 2e  value.ToLower().
141a0 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a  GetHashCode();..
141b0 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 65 6c  #endif..      el
141c0 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f  se..        thro
141d0 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
141e0 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c  llException("val
141f0 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  ue");..    }..  
14200 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
14210 7d 0d 0a 7d 0d 0a                                }..}..