System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b394246f1e219ff3530b40e230dee06f2a30cd8a:


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: 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 55 6e  value for the Un
0300: 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e 20 4a  ix epoch (e.g. J
0310: 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 20 61  anuary 1, 1970 a
0320: 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e 20 55  t midnight, in U
0330: 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  TC)...    /// </
0340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
0350: 6f 74 65 63 74 65 64 20 73 74 61 74 69 63 20 72  otected static r
0360: 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69 6d 65  eadonly DateTime
0370: 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a 20 20   UnixEpoch =..  
0380: 20 20 20 20 20 20 6e 65 77 20 44 61 74 65 54 69        new DateTi
0390: 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c 20 30  me(1970, 1, 1, 0
03a0: 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69 6d 65  , 0, 0, DateTime
03b0: 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a 20 20  Kind.Utc);....  
03c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
03d0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c  .    /// The val
03e0: 75 65 20 6f 66 20 74 68 65 20 4f 4c 45 20 41 75  ue of the OLE Au
03f0: 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63 68 20 72  tomation epoch r
0400: 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 61 20  epresented as a 
0410: 4a 75 6c 69 61 6e 20 64 61 79 2e 0d 0a 20 20 20  Julian day...   
0420: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0430: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
0440: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 64 6f 75  tic readonly dou
0450: 62 6c 65 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f  ble OleAutomatio
0460: 6e 45 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61  nEpochAsJulianDa
0470: 79 20 3d 20 32 34 31 35 30 31 38 2e 35 3b 0d 0a  y = 2415018.5;..
0480: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0490: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
04a0: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 66   format string f
04b0: 6f 72 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  or DateTime valu
04c0: 65 73 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68  es when using th
04d0: 65 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  e InvariantCultu
04e0: 72 65 20 6f 72 20 43 75 72 72 65 6e 74 43 75 6c  re or CurrentCul
04f0: 74 75 72 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20  ture formats... 
0500: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0510: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  >..    private c
0520: 6f 6e 73 74 20 73 74 72 69 6e 67 20 46 75 6c 6c  onst string Full
0530: 46 6f 72 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d  Format = "yyyy-M
0540: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66  M-ddTHH:mm:ss.ff
0550: 66 66 66 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20  fffffK";....    
0560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0570: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20     /// An array 
0580: 6f 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65  of ISO-8601 Date
0590: 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61  Time formats tha
05a0: 74 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72  t we support par
05b0: 73 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sing...    /// <
05c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
05d0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
05e0: 72 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65  ring[] _datetime
05f0: 46 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74  Formats = new st
0600: 72 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20  ring[] {..      
0610: 22 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20  "THHmmssK",..   
0620: 20 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20     "THHmmK",..  
0630: 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46      "HH:mm:ss.FF
0640: 46 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20  FFFFFK",..      
0650: 22 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20  "HH:mm:ssK",..  
0660: 20 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20      "HH:mmK",.. 
0670: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0680: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
0690: 46 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54  FK", /* NOTE: UT
06a0: 43 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a  C default (5). *
06b0: 2f 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  /..      "yyyy-M
06c0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c  M-dd HH:mm:ssK",
06d0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
06e0: 2d 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20  -dd HH:mmK",..  
06f0: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54      "yyyy-MM-ddT
0700: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
0710: 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  K",..      "yyyy
0720: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d  -MM-ddTHH:mmK",.
0730: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
0740: 64 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a  ddTHH:mm:ssK",..
0750: 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48        "yyyyMMddH
0760: 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20  HmmssK",..      
0770: 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c  "yyyyMMddHHmmK",
0780: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64  ..      "yyyyMMd
0790: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b  dTHHmmssFFFFFFFK
07a0: 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d  ",..      "THHmm
07b0: 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48  ss",..      "THH
07c0: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a  mm",..      "HH:
07d0: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d  mm:ss.FFFFFFF",.
07e0: 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73  .      "HH:mm:ss
07f0: 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d  ",..      "HH:mm
0800: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0810: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46  MM-dd HH:mm:ss.F
0820: 46 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45  FFFFFF", /* NOTE
0830: 3a 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c  : Non-UTC defaul
0840: 74 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20  t (19). */..    
0850: 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48    "yyyy-MM-dd HH
0860: 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20  :mm:ss",..      
0870: 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  "yyyy-MM-dd HH:m
0880: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  m",..      "yyyy
0890: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
08a0: 46 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20  FFFFFFF",..     
08b0: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a   "yyyy-MM-ddTHH:
08c0: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  mm",..      "yyy
08d0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
08e0: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
08f0: 4d 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20  MddHHmmss",..   
0900: 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d     "yyyyMMddHHmm
0910: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
0920: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46  MddTHHmmssFFFFFF
0930: 46 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79  F",..      "yyyy
0940: 2d 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20  -MM-dd",..      
0950: 22 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20  "yyyyMMdd",..   
0960: 20 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20     "yy-MM-dd".. 
0970: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0990: 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c  /// The internal
09a0: 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20   default format 
09b0: 66 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65  for UTC DateTime
09c0: 20 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e   values when con
09d0: 76 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f  verting..    ///
09e0: 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20   to a string... 
09f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0a00: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
0a10: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
0a20: 74 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46  tring _datetimeF
0a30: 6f 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65  ormatUtc = _date
0a40: 74 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d  timeFormats[5];.
0a50: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
0a70: 65 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75  e internal defau
0a80: 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f  lt format for lo
0a90: 63 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c  cal DateTime val
0aa0: 75 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74  ues when convert
0ab0: 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20  ing..    /// to 
0ac0: 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f  a string...    /
0ad0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0ae0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
0af0: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
0b00: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  g _datetimeForma
0b10: 74 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69  tLocal = _dateti
0b20: 6d 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a  meFormats[19];..
0b30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0b40: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20  ry>..    /// An 
0b50: 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69  UTF-8 Encoding i
0b60: 6e 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63  nstance, so we c
0b70: 61 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e  an convert strin
0b80: 67 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55  gs to and from U
0b90: 54 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  TF-8..    /// </
0ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72  summary>..    pr
0bb0: 69 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63  ivate static Enc
0bc0: 6f 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65  oding _utf8 = ne
0bd0: 77 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29  w UTF8Encoding()
0be0: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
0bf0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
0c00: 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69  e default DateTi
0c10: 6d 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68  me format for th
0c20: 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  is instance...  
0c30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0c40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53  ..    internal S
0c50: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
0c60: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0c70: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ;..    /// <summ
0c80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ary>..    /// Th
0c90: 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69  e default DateTi
0ca0: 6d 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20  meKind for this 
0cb0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0cc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0cd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65     internal Date
0ce0: 54 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69  TimeKind _dateti
0cf0: 6d 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f  meKind;..    ///
0d00: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0d10: 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20  /// The default 
0d20: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20  DateTime format 
0d30: 73 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20  string for this 
0d40: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0d50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0d60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69     internal stri
0d70: 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d  ng _datetimeForm
0d80: 61 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b  atString = null;
0d90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0da0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69  ry>..    /// Ini
0db0: 74 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e  tializes the con
0dc0: 76 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20  version class.. 
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0de0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
0df0: 6d 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65  m name="fmt">The
0e00: 20 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69   default date/ti
0e10: 6d 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65  me format to use
0e20: 20 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e   for this instan
0e30: 63 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  ce</param>..    
0e40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
0e50: 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54  "kind">The DateT
0e60: 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c  imeKind to use.<
0e70: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
0e80: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d   <param name="fm
0e90: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74  tString">The Dat
0ea0: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72  eTime format str
0eb0: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ing to use.</par
0ec0: 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  am>..    interna
0ed0: 6c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28  l SQLiteConvert(
0ee0: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
0ef0: 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c  DateFormats fmt,
0f00: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69  ..        DateTi
0f10: 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20  meKind kind,..  
0f20: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74        string fmt
0f30: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  String..        
0f40: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
0f50: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20  _datetimeFormat 
0f60: 3d 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64  = fmt;..      _d
0f70: 61 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69  atetimeKind = ki
0f80: 6e 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65  nd;..      _date
0f90: 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  timeFormatString
0fa0: 20 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20   = fmtString;.. 
0fb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67     }....    #reg
0fc0: 69 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72  ion UTF-8 Conver
0fd0: 73 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a  sion Functions..
0fe0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0ff0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
1000: 72 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20  rts a string to 
1010: 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  a UTF-8 encoded 
1020: 62 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64  byte array sized
1030: 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75   to include a nu
1040: 6c 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63  ll-terminating c
1050: 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f  haracter...    /
1060: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1070: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
1080: 6d 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e  me="sourceText">
1090: 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f  The string to co
10a0: 6e 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f  nvert to UTF-8</
10b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
10c0: 3c 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20  <returns>A byte 
10d0: 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67  array containing
10e0: 20 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73   the converted s
10f0: 74 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78  tring plus an ex
1100: 74 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e  tra 0 terminatin
1110: 67 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e  g byte at the en
1120: 64 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c  d of the array.<
1130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
1140: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74  ublic static byt
1150: 65 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e  e[] ToUTF8(strin
1160: 67 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20  g sourceText).. 
1170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 42 79 74 65     {..      Byte
1180: 5b 5d 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20  [] byteArray;.. 
1190: 20 20 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20       int nlen = 
11a0: 5f 75 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75  _utf8.GetByteCou
11b0: 6e 74 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b  nt(sourceText) +
11c0: 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74   1;....      byt
11d0: 65 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74  eArray = new byt
11e0: 65 5b 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20  e[nlen];..      
11f0: 6e 6c 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74  nlen = _utf8.Get
1200: 42 79 74 65 73 28 73 6f 75 72 63 65 54 65 78 74  Bytes(sourceText
1210: 2c 20 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e  , 0, sourceText.
1220: 4c 65 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61  Length, byteArra
1230: 79 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79  y, 0);..      by
1240: 74 65 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20  teArray[nlen] = 
1250: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75  0;....      retu
1260: 72 6e 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20  rn byteArray;.. 
1270: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1280: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1290: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74  // Convert a Dat
12a0: 65 54 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38  eTime to a UTF-8
12b0: 20 65 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74   encoded, zero-t
12c0: 65 72 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61  erminated byte a
12d0: 72 72 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rray...    /// <
12e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
12f0: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
1300: 20 20 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74    /// This funct
1310: 69 6f 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69  ion is a conveni
1320: 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77  ence function, w
1330: 68 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73  hich first calls
1340: 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74   ToString() on t
1350: 68 65 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64  he DateTime, and
1360: 20 74 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54   then calls ToUT
1370: 46 38 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20  F8() with the.. 
1380: 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65     /// string re
1390: 73 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  sult...    /// <
13a0: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  /remarks>..    /
13b0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
13c0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54  dateTimeValue">T
13d0: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63  he DateTime to c
13e0: 6f 6e 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d  onvert.</param>.
13f0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
1400: 73 3e 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f  s>The UTF-8 enco
1410: 64 65 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c  ded string, incl
1420: 75 64 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e  uding a 0 termin
1430: 61 74 69 6e 67 20 62 79 74 65 20 61 74 20 74 68  ating byte at th
1440: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72  e end of the arr
1450: 61 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ay.</returns>.. 
1460: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d     public byte[]
1470: 20 54 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65   ToUTF8(DateTime
1480: 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d   dateTimeValue).
1490: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
14a0: 74 75 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74  turn ToUTF8(ToSt
14b0: 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c  ring(dateTimeVal
14c0: 75 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ue));..    }....
14d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
14f0: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f  rts a UTF-8 enco
1500: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68  ded IntPtr of th
1510: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67  e specified leng
1520: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73  th into a .NET s
1530: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tring..    /// <
1540: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1550: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1560: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68  nativestring">Th
1570: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  e pointer to the
1580: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68   memory where th
1590: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69  e UTF-8 string i
15a0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d  s encoded</param
15b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
15c0: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74  m name="nativest
15d0: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d  ringlen">The num
15e0: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20  ber of bytes to 
15f0: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a  decode</param>..
1600: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
1610: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  >A string contai
1620: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61  ning the transla
1630: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29  ted character(s)
1640: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
1650: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73  public virtual s
1660: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49  tring ToString(I
1670: 6e 74 50 74 72 20 6e 61 74 69 76 65 73 74 72 69  ntPtr nativestri
1680: 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74  ng, int nativest
1690: 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d  ringlen)..    {.
16a0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 54  .      return UT
16b0: 46 38 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76  F8ToString(nativ
16c0: 65 73 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73  estring, natives
16d0: 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20  tringlen);..    
16e0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
16f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1700: 43 6f 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38  Converts a UTF-8
1710: 20 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20   encoded IntPtr 
1720: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
1730: 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e   length into a .
1740: 4e 45 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  NET string..    
1750: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1760: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
1770: 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e  ame="nativestrin
1780: 67 22 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74  g">The pointer t
1790: 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65  o the memory whe
17a0: 72 65 20 74 68 65 20 55 54 46 2d 38 20 73 74 72  re the UTF-8 str
17b0: 69 6e 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f  ing is encoded</
17c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
17d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74  <param name="nat
17e0: 69 76 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68  ivestringlen">Th
17f0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
1800: 73 20 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72  s to decode</par
1810: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
1820: 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63  turns>A string c
1830: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72  ontaining the tr
1840: 61 6e 73 6c 61 74 65 64 20 63 68 61 72 61 63 74  anslated charact
1850: 65 72 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d  er(s)</returns>.
1860: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
1870: 69 63 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f  ic string UTF8To
1880: 53 74 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61  String(IntPtr na
1890: 74 69 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20  tivestring, int 
18a0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29  nativestringlen)
18b0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
18c0: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20  f (nativestring 
18d0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c  == IntPtr.Zero |
18e0: 7c 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65  | nativestringle
18f0: 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53  n == 0) return S
1900: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20  tring.Empty;..  
1910: 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74      if (nativest
1920: 72 69 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20  ringlen < 0)..  
1930: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e      {..        n
1940: 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d  ativestringlen =
1950: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77   0;....        w
1960: 68 69 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65  hile (Marshal.Re
1970: 61 64 42 79 74 65 28 6e 61 74 69 76 65 73 74 72  adByte(nativestr
1980: 69 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e  ing, nativestrin
1990: 67 6c 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20  glen) != 0)..   
19a0: 20 20 20 20 20 20 20 6e 61 74 69 76 65 73 74 72         nativestr
19b0: 69 6e 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20  inglen++;....   
19c0: 20 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73       if (natives
19d0: 74 72 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72  tringlen == 0) r
19e0: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70  eturn String.Emp
19f0: 74 79 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a  ty;..      }....
1a00: 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
1a10: 65 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74  eArray = new byt
1a20: 65 5b 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65  e[nativestringle
1a30: 6e 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72  n];....      Mar
1a40: 73 68 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65  shal.Copy(native
1a50: 73 74 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61  string, byteArra
1a60: 79 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69  y, 0, nativestri
1a70: 6e 67 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20  nglen);....     
1a80: 20 72 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65   return _utf8.Ge
1a90: 74 53 74 72 69 6e 67 28 62 79 74 65 41 72 72 61  tString(byteArra
1aa0: 79 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69  y, 0, nativestri
1ab0: 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a  nglen);..    }..
1ac0: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69  ....    #endregi
1ad0: 6f 6e 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  on....    #regio
1ae0: 6e 20 44 61 74 65 54 69 6d 65 20 43 6f 6e 76 65  n DateTime Conve
1af0: 72 73 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d  rsion Functions.
1b00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
1b10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
1b20: 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e  erts a string in
1b30: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75  to a DateTime, u
1b40: 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d  sing the DateTim
1b50: 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d  eFormat, DateTim
1b60: 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20  eKind,..    /// 
1b70: 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  and DateTimeForm
1b80: 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69  atString specifi
1b90: 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  ed for the conne
1ba0: 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61  ction when it wa
1bb0: 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f  s opened...    /
1bc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
1bd0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e     /// <remarks>
1be0: 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74  ..    /// Accept
1bf0: 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74  able ISO8601 Dat
1c00: 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72  eTime formats ar
1c10: 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73  e:..    /// <lis
1c20: 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e  t type="bullet">
1c30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1c40: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
1c50: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
1c60: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
1c70: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
1c80: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64  iption>THHmmK</d
1c90: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
1ca0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
1cb0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
1cc0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
1cd0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
1ce0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
1cf0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
1d00: 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  n>HH:mm:ssK</des
1d10: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1d30: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
1d40: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mmK</description
1d50: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
1d60: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
1d70: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
1d80: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
1d90: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
1da0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1db0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1dc0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
1dd0: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70  :mm:ssK</descrip
1de0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
1df0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
1e00: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
1e10: 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  -dd HH:mmK</desc
1e20: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
1e30: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
1e40: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
1e50: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e  -MM-ddTHH:mm:ss.
1e60: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
1e70: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
1e80: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
1e90: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
1ea0: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-ddTHH:mmK</des
1eb0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1ec0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1ed0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
1ee0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
1ef0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
1f00: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1f10: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1f20: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73  on>yyyyMMddHHmms
1f30: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
1f40: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
1f50: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
1f60: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
1f70: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
1f80: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1f90: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1fa0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
1fb0: 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63  ssFFFFFFFK</desc
1fc0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
1fd0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
1fe0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
1ff0: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
2000: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2010: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2020: 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63  tion>THHmm</desc
2030: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2040: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2050: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
2060: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
2070: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2080: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2090: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
20a0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
20b0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
20c0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
20d0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64  ription>HH:mm</d
20e0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
20f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
2100: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
2110: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
2120: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
2130: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2140: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2150: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
2160: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c  -MM-dd HH:mm:ss<
2170: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2180: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2190: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
21a0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
21b0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
21c0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
21d0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
21e0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
21f0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
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: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
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 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
2280: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
2290: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
22a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
22b0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
22c0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69  Hmmss</descripti
22d0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
22e0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
22f0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
2300: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  Hmm</description
2310: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2320: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2330: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48  tion>yyyyMMddTHH
2340: 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73  mmssFFFFFFF</des
2350: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2360: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2370: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
2380: 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70  y-MM-dd</descrip
2390: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
23a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
23b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
23c0: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  d</description><
23d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
23e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
23f0: 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  on>yy-MM-dd</des
2400: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2410: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74  ..    /// </list
2420: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68  >..    /// If th
2430: 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20  e string cannot 
2440: 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e  be matched to on
2450: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66  e of the above f
2460: 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20  ormats -OR-..   
2470: 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d   /// the DateTim
2480: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66  eFormatString if
2490: 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65   one was provide
24a0: 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20  d, an exception 
24b0: 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65  will..    /// be
24c0: 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f   thrown...    //
24d0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
24e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
24f0: 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65  e="dateText">The
2500: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
2510: 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67  ng either a long
2520: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20   integer number 
2530: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e  of 100-nanosecon
2540: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20  d units since.. 
2550: 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61     /// System.Da
2560: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c  teTime.MinValue,
2570: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f   a Julian day do
2580: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72  uble, an integer
2590: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
25a0: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
25b0: 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20  x epoch, a..    
25c0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65  /// culture-inde
25d0: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65  pendent formatte
25e0: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
25f0: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74  string, a format
2600: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
2610: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20  e string in the 
2620: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f  current..    ///
2630: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20   culture, or an 
2640: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73  ISO8601-format s
2650: 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  tring.</param>..
2660: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
2670: 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  >A DateTime valu
2680: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
2690: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65   public DateTime
26a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69   ToDateTime(stri
26b0: 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20  ng dateText)..  
26c0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
26d0: 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74  n ToDateTime(dat
26e0: 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65  eText, _datetime
26f0: 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d  Format, _datetim
2700: 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65  eKind, _datetime
2710: 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a  FormatString);..
2720: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
2730: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2740: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73  /// Converts a s
2750: 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74  tring into a Dat
2760: 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65  eTime, using the
2770: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
2780: 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  imeFormat,..    
2790: 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  /// DateTimeKind
27a0: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
27b0: 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20  matString...    
27c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
27d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73      /// <remarks
27e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70  >..    /// Accep
27f0: 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61  table ISO8601 Da
2800: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61  teTime formats a
2810: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69  re:..    /// <li
2820: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22  st type="bullet"
2830: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2840: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48  ><description>TH
2850: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
2860: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2870: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2880: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f  ription>THHmmK</
2890: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
28a0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
28b0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
28c0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
28d0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
28e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
28f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
2900: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65  on>HH:mm:ssK</de
2910: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2920: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2930: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
2940: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :mmK</descriptio
2950: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2960: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2970: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
2980: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46   HH:mm:ss.FFFFFF
2990: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FK</description>
29a0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
29b0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
29c0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
29d0: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69  H:mm:ssK</descri
29e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
29f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2a00: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
2a10: 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73  M-dd HH:mmK</des
2a20: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2a30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2a40: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
2a50: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73  y-MM-ddTHH:mm:ss
2a60: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  .FFFFFFFK</descr
2a70: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2a80: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2a90: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
2aa0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65  MM-ddTHH:mmK</de
2ab0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2ac0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2ad0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2ae0: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
2af0: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  sK</description>
2b00: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2b10: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2b20: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d  ion>yyyyMMddHHmm
2b30: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
2b40: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2b50: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2b60: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
2b70: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
2b80: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2b90: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2ba0: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d  ion>yyyyMMddTHHm
2bb0: 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  mssFFFFFFFK</des
2bc0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2bd0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2be0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48  <description>THH
2bf0: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  mmss</descriptio
2c00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2c10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2c20: 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73  ption>THHmm</des
2c30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2c40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2c50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
2c60: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
2c70: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
2c80: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
2c90: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
2ca0: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70  H:mm:ss</descrip
2cb0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
2cc0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
2cd0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f  cription>HH:mm</
2ce0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2cf0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2d00: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2d10: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
2d20: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73  :ss.FFFFFFF</des
2d30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2d40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2d50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
2d60: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
2d70: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2d80: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2d90: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2da0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
2db0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
2dc0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2dd0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2de0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
2df0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
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 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
2e40: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</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 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
2e80: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74  :mm:ss</descript
2e90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2ea0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2eb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2ec0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
2ed0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2ee0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2ef0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
2f00: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  HHmm</descriptio
2f10: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2f20: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2f30: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
2f40: 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65  HmmssFFFFFFF</de
2f50: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2f60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2f70: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2f80: 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69  yy-MM-dd</descri
2f90: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2fa0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2fb0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
2fc0: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  dd</description>
2fd0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2fe0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2ff0: 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65  ion>yy-MM-dd</de
3000: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
3010: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73  >..    /// </lis
3020: 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74  t>..    /// If t
3030: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74  he string cannot
3040: 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f   be matched to o
3050: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20  ne of the above 
3060: 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20  formats -OR-..  
3070: 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69    /// the DateTi
3080: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69  meFormatString i
3090: 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64  f one was provid
30a0: 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e  ed, an exception
30b0: 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62   will..    /// b
30c0: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f  e thrown...    /
30d0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
30e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
30f0: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68  me="dateText">Th
3100: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e  e string contain
3110: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e  ing either a lon
3120: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72  g integer number
3130: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f   of 100-nanoseco
3140: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a  nd units since..
3150: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44      /// System.D
3160: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65  ateTime.MinValue
3170: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64  , a Julian day d
3180: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65  ouble, an intege
3190: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  r number of seco
31a0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e  nds since the Un
31b0: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20  ix epoch, a..   
31c0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64   /// culture-ind
31d0: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74  ependent formatt
31e0: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
31f0: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61   string, a forma
3200: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
3210: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65  me string in the
3220: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f   current..    //
3230: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e  / culture, or an
3240: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20   ISO8601-format 
3250: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d  string.</param>.
3260: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
3270: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68  name="format">Th
3280: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
3290: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ats to use.</par
32a0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
32b0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e  ram name="kind">
32c0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  The DateTimeKind
32d0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e   to use.</param>
32e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
32f0: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72   name="formatStr
3300: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ing">The DateTim
3310: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
3320: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
3330: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
3340: 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c  s>A DateTime val
3350: 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  ue</returns>..  
3360: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
3370: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
3380: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ime(..        st
3390: 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a  ring dateText,..
33a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
33b0: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74  teFormats format
33c0: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54  ,..        DateT
33d0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20  imeKind kind,.. 
33e0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f         string fo
33f0: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20  rmatString..    
3400: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
3410: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f        switch (fo
3420: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
3430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
3440: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
3450: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
3460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3480: 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74      return ToDat
3490: 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f  eTime(Convert.To
34a0: 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20  Int64(..        
34b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34c0: 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72  dateText, Cultur
34d0: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
34e0: 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d  ulture), kind);.
34f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3500: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3510: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
3520: 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79  ormats.JulianDay
3530: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
3540: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3550: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3560: 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76   ToDateTime(Conv
3570: 65 72 74 2e 54 6f 44 6f 75 62 6c 65 28 0d 0a 20  ert.ToDouble(.. 
3580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3590: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
35a0: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76   CultureInfo.Inv
35b0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20  ariantCulture), 
35c0: 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20  kind);..        
35d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35e0: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
35f0: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 55 6e  teDateFormats.Un
3600: 69 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20 20  ixEpoch:..      
3610: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3630: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
3640: 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74  me(Convert.ToInt
3650: 33 32 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  32(..           
3660: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
3670: 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e  eText, CultureIn
3680: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
3690: 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20  ure), kind);..  
36a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
36b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
36c0: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
36d0: 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  ats.InvariantCul
36e0: 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20  ture:..         
36f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3710: 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21   (formatString !
3720: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3740: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
3750: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
3760: 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74  eTime.ParseExact
3770: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
3790: 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53  ateText, formatS
37a0: 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  tring,..        
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c0: 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d      DateTimeForm
37d0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
37e0: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3800: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
3810: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
3840: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
3850: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
3860: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3880: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
3890: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38b0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
38c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38d0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
38e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38f0: 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e  return DateTime.
3900: 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65  SpecifyKind(Date
3910: 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20  Time.Parse(..   
3920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3930: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78           dateTex
3940: 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  t, DateTimeForma
3950: 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49  tInfo.InvariantI
3960: 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nfo,..          
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3980: 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69    kind == DateTi
3990: 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20  meKind.Utc ?..  
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
39c0: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a  teTimeStyles.Adj
39d0: 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a  ustToUniversal :
39e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73    DateTimeStyles
3a10: 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20  .None),..       
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20       kind);..   
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
3a60: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
3a70: 74 73 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  ts.CurrentCultur
3a80: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
3a90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3aa0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66             if (f
3ab0: 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e  ormatString != n
3ac0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3ae0: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
3af0: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
3b00: 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a  me.ParseExact(..
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65              date
3b30: 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69  Text, formatStri
3b40: 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
3b70: 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c  nfo.CurrentInfo,
3b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
3ba0: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
3bb0: 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20  nd.Utc ?..      
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
3be0: 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54  meStyles.AdjustT
3bf0: 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20  oUniversal :..  
3c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
3c20: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e  teTimeStyles.Non
3c30: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
3c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c50: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20   kind);..       
3c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
3c70: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
3c80: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3c90: 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69  n DateTime.Speci
3ca0: 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e  fyKind(DateTime.
3cb0: 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20  Parse(..        
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 44 61      dateText, Da
3ce0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f  teTimeFormatInfo
3cf0: 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20  .CurrentInfo,.. 
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d10: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
3d20: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
3d30: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d50: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
3d60: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
3d70: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
3d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d90: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
3da0: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
3db0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
3dd0: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
3de0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3df0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a       default: /*
3e00: 20 49 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20 20   ISO-8601 */..  
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
3e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3e30: 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53       if (formatS
3e40: 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a  tring != null)..
3e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
3e70: 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b  ateTime.SpecifyK
3e80: 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72  ind(DateTime.Par
3e90: 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20  seExact(..      
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3eb0: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
3ec0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20  formatString,.. 
3ed0: 20 20 20 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 44 61 74 65 54             DateT
3ef0: 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e  imeFormatInfo.In
3f00: 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20  variantInfo,..  
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 6b 69 6e 64 20 3d            kind =
3f30: 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55  = DateTimeKind.U
3f40: 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  tc ?..          
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f60: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74        DateTimeSt
3f70: 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69  yles.AdjustToUni
3f80: 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20  versal :..      
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3fa0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
3fb0: 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d  meStyles.None),.
3fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e               kin
3fe0: 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d);..           
3ff0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
4000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4010: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
4020: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
4030: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73  nd(DateTime.Pars
4040: 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20  eExact(..       
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4060: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 5f       dateText, _
4070: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 2c  datetimeFormats,
4080: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
40a0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f  teTimeFormatInfo
40b0: 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d  .InvariantInfo,.
40c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
40d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e               kin
40e0: 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e  d == DateTimeKin
40f0: 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20  d.Utc ?..       
4100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4110: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
4120: 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f  eStyles.AdjustTo
4130: 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20  Universal :..   
4140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4150: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
4160: 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65  eTimeStyles.None
4170: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
4180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4190: 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20  kind);..        
41a0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
41b0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
41c0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
41d0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
41e0: 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76  ts a julianday v
41f0: 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65  alue into a Date
4200: 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  Time..    /// </
4210: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
4220: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a  / <param name="j
4230: 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61  ulianDay">The va
4240: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f  lue to convert</
4250: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
4260: 3c 72 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20  <returns>A .NET 
4270: 44 61 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e  DateTime</return
4280: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44  s>..    public D
4290: 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69  ateTime ToDateTi
42a0: 6d 65 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e  me(double julian
42b0: 44 61 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  Day)..    {..   
42c0: 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65     return ToDate
42d0: 54 69 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c 20  Time(julianDay, 
42e0: 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b 0d  _datetimeKind);.
42f0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
4300: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4310: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
4320: 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20  julianday value 
4330: 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d  into a DateTime.
4340: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
4350: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
4360: 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e  ram name="julian
4370: 44 61 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74  Day">The value t
4380: 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d  o convert</param
4390: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
43a0: 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68  m name="kind">Th
43b0: 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74  e DateTimeKind t
43c0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
43d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
43e0: 3e 41 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65  >A .NET DateTime
43f0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
4400: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 44 61  public static Da
4410: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
4420: 65 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44  e(double julianD
4430: 61 79 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  ay, DateTimeKind
4440: 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20   kind)..    {.. 
4450: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
4460: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
4470: 6e 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nd(..           
4480: 20 44 61 74 65 54 69 6d 65 2e 46 72 6f 6d 4f 41   DateTime.FromOA
4490: 44 61 74 65 28 6a 75 6c 69 61 6e 44 61 79 20 2d  Date(julianDay -
44a0: 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70   OleAutomationEp
44b0: 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 29 2c  ochAsJulianDay),
44c0: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a   kind);..    }..
44d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
44e0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
44f0: 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69 66  verts the specif
4500: 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 73 65  ied number of se
4510: 63 6f 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 55  conds from the U
4520: 6e 69 78 20 65 70 6f 63 68 20 69 6e 74 6f 20 61  nix epoch into a
4530: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
4540: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
4550: 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
4560: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4570: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4580: 65 3d 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20  e="seconds">..  
4590: 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72    /// The number
45a0: 20 6f 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e 64   of whole second
45b0: 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78  s since the Unix
45c0: 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f   epoch...    ///
45d0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
45e0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
45f0: 6b 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  kind">..    /// 
4600: 45 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f  Either Utc or Lo
4610: 63 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f  cal time...    /
4620: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
4630: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
4640: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20      /// The new 
4650: 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
4660: 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ime" /> value...
4670: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
4680: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
4690: 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65   static DateTime
46a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 69 6e 74 20   ToDateTime(int 
46b0: 73 65 63 6f 6e 64 73 2c 20 44 61 74 65 54 69 6d  seconds, DateTim
46c0: 65 4b 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20 20  eKind kind)..   
46d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75   {..        retu
46e0: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
46f0: 69 66 79 4b 69 6e 64 28 55 6e 69 78 45 70 6f 63  ifyKind(UnixEpoc
4700: 68 2e 41 64 64 53 65 63 6f 6e 64 73 28 73 65 63  h.AddSeconds(sec
4710: 6f 6e 64 73 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20  onds), kind);.. 
4720: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
4730: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
4740: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20  // Converts the 
4750: 73 70 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72  specified number
4760: 20 6f 66 20 74 69 63 6b 73 20 73 69 6e 63 65 20   of ticks since 
4770: 74 68 65 20 65 70 6f 63 68 20 69 6e 74 6f 20 61  the epoch into a
4780: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63  ..    /// <see c
4790: 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f  ref="DateTime" /
47a0: 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  > value...    //
47b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
47c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
47d0: 65 3d 22 74 69 63 6b 73 22 3e 0d 0a 20 20 20 20  e="ticks">..    
47e0: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
47f0: 66 20 77 68 6f 6c 65 20 74 69 63 6b 73 20 73 69  f whole ticks si
4800: 6e 63 65 20 74 68 65 20 65 70 6f 63 68 2e 0d 0a  nce the epoch...
4810: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4820: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
4830: 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20   name="kind">.. 
4840: 20 20 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74     /// Either Ut
4850: 63 20 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e  c or Local time.
4860: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
4870: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
4880: 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  urns>..    /// T
4890: 68 65 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66  he new <see cref
48a0: 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76  ="DateTime" /> v
48b0: 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
48c0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69  /returns>..    i
48d0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44  nternal static D
48e0: 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69  ateTime ToDateTi
48f0: 6d 65 28 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44  me(long ticks, D
4900: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
4910: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
4920: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74    return new Dat
4930: 65 54 69 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e  eTime(ticks, kin
4940: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
4950: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4960: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
4970: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
4980: 75 63 74 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44  uct to a JulianD
4990: 61 79 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f  ay double..    /
49a0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
49b0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
49c0: 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44  me="value">The D
49d0: 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65  ateTime to conve
49e0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
49f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
4a00: 20 4a 75 6c 69 61 6e 44 61 79 20 76 61 6c 75 65   JulianDay value
4a10: 20 74 68 65 20 44 61 74 65 74 69 6d 65 20 72 65   the Datetime re
4a20: 70 72 65 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e  presents</return
4a30: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
4a40: 74 61 74 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a  tatic double ToJ
4a50: 75 6c 69 61 6e 44 61 79 28 44 61 74 65 54 69 6d  ulianDay(DateTim
4a60: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  e value)..    {.
4a70: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61  .      return va
4a80: 6c 75 65 2e 54 6f 4f 41 44 61 74 65 28 29 20 2b  lue.ToOADate() +
4a90: 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70   OleAutomationEp
4aa0: 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 3b 0d  ochAsJulianDay;.
4ab0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
4ac0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
4ad0: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
4ae0: 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74 20  DateTime struct 
4af0: 74 6f 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d  to the whole num
4b00: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73  ber of seconds s
4b10: 69 6e 63 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f  ince the..    //
4b20: 2f 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20  / Unix epoch... 
4b30: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4b40: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
4b50: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54  m name="value">T
4b60: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63  he DateTime to c
4b70: 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a  onvert</param>..
4b80: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
4b90: 3e 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65  >The whole numbe
4ba0: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
4bb0: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  ce the Unix epoc
4bc0: 68 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  h</returns>..   
4bd0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c   public static l
4be0: 6f 6e 67 20 54 6f 55 6e 69 78 45 70 6f 63 68 28  ong ToUnixEpoch(
4bf0: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d  DateTime value).
4c00: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
4c10: 72 65 74 75 72 6e 20 28 76 61 6c 75 65 2e 53 75  return (value.Su
4c20: 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68  btract(UnixEpoch
4c30: 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70  ).Ticks / TimeSp
4c40: 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e  an.TicksPerSecon
4c50: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
4c60: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
4c70: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73  .    /// Returns
4c80: 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f   the DateTime fo
4c90: 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75  rmat string to u
4ca0: 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69  se for the speci
4cb0: 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69 6e  fied DateTimeKin
4cc0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 3c  d...    /// If <
4cd0: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66  paramref name="f
4ce0: 6f 72 6d 61 74 53 74 72 69 6e 67 22 20 2f 3e 20  ormatString" /> 
4cf0: 69 73 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74 20  is not null, it 
4d00: 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64  will be returned
4d10: 20 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20   verbatim...    
4d20: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
4d30: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4d40: 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44  ame="kind">The D
4d50: 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75  ateTimeKind to u
4d60: 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  se.</param>..   
4d70: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4d80: 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e  ="formatString">
4d90: 54 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72  The DateTime for
4da0: 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73  mat string to us
4db0: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  e.</param>..    
4dc0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
4dd0: 20 20 20 2f 2f 2f 20 54 68 65 20 44 61 74 65 54     /// The DateT
4de0: 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  ime format strin
4df0: 67 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65  g to use for the
4e00: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54   specified DateT
4e10: 69 6d 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f  imeKind...    //
4e20: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
4e30: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
4e40: 20 73 74 72 69 6e 67 20 47 65 74 44 61 74 65 54   string GetDateT
4e50: 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d 0a  imeKindFormat(..
4e60: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
4e70: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
4e80: 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61      string forma
4e90: 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  tString..       
4ea0: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
4eb0: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
4ec0: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65 74  ing != null) ret
4ed0: 75 72 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  urn formatString
4ee0: 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  ;..        retur
4ef0: 6e 20 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54  n (kind == DateT
4f00: 69 6d 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20 5f  imeKind.Utc) ? _
4f10: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 55 74  datetimeFormatUt
4f20: 63 20 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f 72  c : _datetimeFor
4f30: 6d 61 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20 7d  matLocal;..    }
4f40: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
4f50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
4f60: 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67  onverts a string
4f70: 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65   into a DateTime
4f80: 2c 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65  , using the Date
4f90: 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65  TimeFormat, Date
4fa0: 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f  TimeKind,..    /
4fb0: 2f 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46  // and DateTimeF
4fc0: 6f 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63  ormatString spec
4fd0: 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f  ified for the co
4fe0: 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74  nnection when it
4ff0: 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20   was opened...  
5000: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
5010: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5020: 20 6e 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65   name="dateValue
5030: 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 76  ">The DateTime v
5040: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
5050: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
5060: 20 3c 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72   <returns>Either
5070: 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69   a string contai
5080: 6e 69 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e  ning the long in
5090: 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20  teger number of 
50a0: 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75  100-nanosecond u
50b0: 6e 69 74 73 20 73 69 6e 63 65 20 53 79 73 74 65  nits since Syste
50c0: 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61  m.DateTime.MinVa
50d0: 6c 75 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20  lue, a..    /// 
50e0: 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c  Julian day doubl
50f0: 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75  e, an integer nu
5100: 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20  mber of seconds 
5110: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
5120: 70 6f 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d  poch, a culture-
5130: 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d  independent form
5140: 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74  atted date and t
5150: 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72  ime..    /// str
5160: 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64  ing, a formatted
5170: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73   date and time s
5180: 74 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72  tring in the cur
5190: 72 65 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72  rent culture, or
51a0: 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d   an ISO8601-form
51b0: 61 74 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72  at date/time str
51c0: 69 6e 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ing.</returns>..
51d0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
51e0: 67 20 54 6f 53 74 72 69 6e 67 28 44 61 74 65 54  g ToString(DateT
51f0: 69 6d 65 20 64 61 74 65 56 61 6c 75 65 29 0d 0a  ime dateValue)..
5200: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73      {..        s
5210: 77 69 74 63 68 20 28 5f 64 61 74 65 74 69 6d 65  witch (_datetime
5220: 46 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20  Format)..       
5230: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5240: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
5250: 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20  ormats.Ticks:.. 
5260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5270: 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e  eturn dateValue.
5280: 54 69 63 6b 73 2e 54 6f 53 74 72 69 6e 67 28 43  Ticks.ToString(C
5290: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
52a0: 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20  iantCulture);.. 
52b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
52c0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
52d0: 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20  s.JulianDay:..  
52e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
52f0: 74 75 72 6e 20 54 6f 4a 75 6c 69 61 6e 44 61 79  turn ToJulianDay
5300: 28 64 61 74 65 56 61 6c 75 65 29 2e 54 6f 53 74  (dateValue).ToSt
5310: 72 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f  ring(CultureInfo
5320: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
5330: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
5340: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
5350: 46 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63  Formats.UnixEpoc
5360: 68 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h:..            
5370: 20 20 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e      return ((lon
5380: 67 29 28 64 61 74 65 56 61 6c 75 65 2e 53 75 62  g)(dateValue.Sub
5390: 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29  tract(UnixEpoch)
53a0: 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61  .Ticks / TimeSpa
53b0: 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64  n.TicksPerSecond
53c0: 29 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a  )).ToString();..
53d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
53e0: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
53f0: 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  ts.InvariantCult
5400: 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ure:..          
5410: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74        return dat
5420: 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28  eValue.ToString(
5430: 28 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74  (_datetimeFormat
5440: 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20  String != null) 
5450: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
5460: 20 20 20 20 20 20 20 5f 64 61 74 65 74 69 6d 65         _datetime
5470: 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46  FormatString : F
5480: 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75  ullFormat, Cultu
5490: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
54a0: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
54b0: 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69         case SQLi
54c0: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75  teDateFormats.Cu
54d0: 72 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20  rrentCulture:.. 
54e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
54f0: 65 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e  eturn dateValue.
5500: 54 6f 53 74 72 69 6e 67 28 28 5f 64 61 74 65 74  ToString((_datet
5510: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20  imeFormatString 
5520: 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20  != null) ?..    
5530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5540: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53  _datetimeFormatS
5550: 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d  tring : FullForm
5560: 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  at, CultureInfo.
5570: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b  CurrentCulture);
5580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65  ..            de
5590: 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20  fault:..        
55a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
55b0: 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d  dateValue.Kind =
55c0: 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55  = DateTimeKind.U
55d0: 6e 73 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20  nspecified) ?.. 
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
55f0: 20 20 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63     DateTime.Spec
5600: 69 66 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75  ifyKind(dateValu
5610: 65 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64  e, _datetimeKind
5620: 29 2e 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20  ).ToString(..   
5630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5640: 20 20 20 20 20 47 65 74 44 61 74 65 54 69 6d 65       GetDateTime
5650: 4b 69 6e 64 46 6f 72 6d 61 74 28 5f 64 61 74 65  KindFormat(_date
5660: 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74  timeKind, _datet
5670: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29  imeFormatString)
5680: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
56a0: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
56b0: 69 61 6e 74 43 75 6c 74 75 72 65 29 20 3a 20 64  iantCulture) : d
56c0: 61 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e  ateValue.ToStrin
56d0: 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g(..            
56e0: 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 44              GetD
56f0: 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61  ateTimeKindForma
5700: 74 28 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64  t(dateValue.Kind
5710: 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  , _datetimeForma
5720: 74 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20  tString),..     
5730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5740: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
5750: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
5760: 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ure);..        }
5770: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
5780: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
5790: 20 20 2f 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66    /// Internal f
57a0: 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65  unction to conve
57b0: 72 74 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64  rt a UTF-8 encod
57c0: 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65  ed IntPtr of the
57d0: 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74   specified lengt
57e0: 68 20 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2e  h to a DateTime.
57f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
5800: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ary>..    /// <r
5810: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
5820: 20 54 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65   This is a conve
5830: 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c  nience function,
5840: 20 77 68 69 63 68 20 66 69 72 73 74 20 63 61 6c   which first cal
5850: 6c 73 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e  ls ToString() on
5860: 20 74 68 65 20 49 6e 74 50 74 72 20 74 6f 20 63   the IntPtr to c
5870: 6f 6e 76 65 72 74 20 69 74 20 74 6f 20 61 20 73  onvert it to a s
5880: 74 72 69 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c  tring, then call
5890: 73 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74  s..    /// ToDat
58a0: 65 54 69 6d 65 28 29 20 6f 6e 20 74 68 65 20 73  eTime() on the s
58b0: 74 72 69 6e 67 20 74 6f 20 72 65 74 75 72 6e 20  tring to return 
58c0: 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20  a DateTime...   
58d0: 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d   /// </remarks>.
58e0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
58f0: 6e 61 6d 65 3d 22 70 74 72 22 3e 41 20 70 6f 69  name="ptr">A poi
5900: 6e 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d  nter to the UTF-
5910: 38 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67  8 encoded string
5920: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
5930: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c  / <param name="l
5940: 65 6e 22 3e 54 68 65 20 6c 65 6e 67 74 68 20 69  en">The length i
5950: 6e 20 62 79 74 65 73 20 6f 66 20 74 68 65 20 73  n bytes of the s
5960: 74 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20  tring</param>.. 
5970: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
5980: 54 68 65 20 70 61 72 73 65 64 20 44 61 74 65 54  The parsed DateT
5990: 69 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72  ime value</retur
59a0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
59b0: 6c 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74  l DateTime ToDat
59c0: 65 54 69 6d 65 28 49 6e 74 50 74 72 20 70 74 72  eTime(IntPtr ptr
59d0: 2c 20 69 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20  , int len)..    
59e0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
59f0: 54 6f 44 61 74 65 54 69 6d 65 28 54 6f 53 74 72  ToDateTime(ToStr
5a00: 69 6e 67 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d  ing(ptr, len));.
5a10: 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64  .    }..    #end
5a20: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
5a30: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
5a40: 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65 74 68 6f   /// Smart metho
5a50: 64 20 6f 66 20 73 70 6c 69 74 74 69 6e 67 20 61  d of splitting a
5a60: 20 73 74 72 69 6e 67 2e 20 20 53 6b 69 70 73 20   string.  Skips 
5a70: 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e 74 73 2c  quoted elements,
5a80: 20 72 65 6d 6f 76 65 73 20 74 68 65 20 71 75 6f   removes the quo
5a90: 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tes...    /// </
5aa0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
5ab0: 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20  / <remarks>..   
5ac0: 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c 69 74 20   /// This split 
5ad0: 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 73  function works s
5ae0: 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20 74 68 65  omewhat like the
5af0: 20 53 74 72 69 6e 67 2e 53 70 6c 69 74 28 29 20   String.Split() 
5b00: 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 61 74  function in that
5b10: 20 69 74 20 62 72 65 61 6b 73 20 61 70 61 72 74   it breaks apart
5b20: 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 0d 0a   a string into..
5b30: 20 20 20 20 2f 2f 2f 20 70 69 65 63 65 73 20 61      /// pieces a
5b40: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 70  nd returns the p
5b50: 69 65 63 65 73 20 61 73 20 61 6e 20 61 72 72 61  ieces as an arra
5b60: 79 2e 20 20 54 68 65 20 70 72 69 6d 61 72 79 20  y.  The primary 
5b70: 64 69 66 66 65 72 65 6e 63 65 73 20 61 72 65 3a  differences are:
5b80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20  ..    /// <list 
5b90: 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a  type="bullet">..
5ba0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
5bb0: 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 20  escription>Only 
5bc0: 6f 6e 65 20 63 68 61 72 61 63 74 65 72 20 63 61  one character ca
5bd0: 6e 20 62 65 20 70 72 6f 76 69 64 65 64 20 61 73  n be provided as
5be0: 20 61 20 73 65 70 61 72 61 74 6f 72 20 63 68 61   a separator cha
5bf0: 72 61 63 74 65 72 3c 2f 64 65 73 63 72 69 70 74  racter</descript
5c00: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
5c10: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
5c20: 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65 64 20 74  ription>Quoted t
5c30: 65 78 74 20 69 6e 73 69 64 65 20 74 68 65 20 73  ext inside the s
5c40: 74 72 69 6e 67 20 69 73 20 73 6b 69 70 70 65 64  tring is skipped
5c50: 20 6f 76 65 72 20 77 68 65 6e 20 73 65 61 72 63   over when searc
5c60: 68 69 6e 67 20 66 6f 72 20 74 68 65 20 73 65 70  hing for the sep
5c70: 61 72 61 74 6f 72 2c 20 61 6e 64 20 74 68 65 20  arator, and the 
5c80: 71 75 6f 74 65 73 20 61 72 65 20 72 65 6d 6f 76  quotes are remov
5c90: 65 64 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ed.</description
5ca0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
5cb0: 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f  / </list>..    /
5cc0: 2f 2f 20 54 68 75 73 2c 20 69 66 20 73 70 6c 69  // Thus, if spli
5cd0: 74 74 69 6e 67 20 74 68 65 20 66 6f 6c 6c 6f 77  tting the follow
5ce0: 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f 6f 6b 69  ing string looki
5cf0: 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d 61 3a 3c  ng for a comma:<
5d00: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 6e  br/>..    /// On
5d10: 65 2c 54 77 6f 2c 20 22 54 68 72 65 65 2c 20 46  e,Two, "Three, F
5d20: 6f 75 72 22 2c 20 46 69 76 65 3c 62 72 2f 3e 0d  our", Five<br/>.
5d30: 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  .    /// <br/>..
5d40: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
5d50: 6c 74 69 6e 67 20 61 72 72 61 79 20 77 6f 75 6c  lting array woul
5d60: 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d 0a  d contain<br/>..
5d70: 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 3c      /// [0] One<
5d80: 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 31  br/>..    /// [1
5d90: 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 20  ] Two<br/>..    
5da0: 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65 2c 20 46  /// [2] Three, F
5db0: 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  our<br/>..    //
5dc0: 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72 2f 3e 0d  / [3] Five<br/>.
5dd0: 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a  .    /// <br/>..
5de0: 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61      /// Note tha
5df0: 74 20 74 68 65 20 6c 65 61 64 69 6e 67 20 61 6e  t the leading an
5e00: 64 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65  d trailing space
5e10: 73 20 77 65 72 65 20 72 65 6d 6f 76 65 64 20 66  s were removed f
5e20: 72 6f 6d 20 65 61 63 68 20 69 74 65 6d 20 64 75  rom each item du
5e30: 72 69 6e 67 20 74 68 65 20 73 70 6c 69 74 2e 0d  ring the split..
5e40: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
5e50: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ks>..    /// <pa
5e60: 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65  ram name="source
5e70: 22 3e 53 6f 75 72 63 65 20 73 74 72 69 6e 67 20  ">Source string 
5e80: 74 6f 20 73 70 6c 69 74 20 61 70 61 72 74 3c 2f  to split apart</
5e90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5ea0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70  <param name="sep
5eb0: 61 72 61 74 6f 72 22 3e 53 65 70 61 72 61 74 6f  arator">Separato
5ec0: 72 20 63 68 61 72 61 63 74 65 72 3c 2f 70 61 72  r character</par
5ed0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
5ee0: 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 61  turns>A string a
5ef0: 72 72 61 79 20 6f 66 20 74 68 65 20 73 70 6c 69  rray of the spli
5f00: 74 20 75 70 20 65 6c 65 6d 65 6e 74 73 3c 2f 72  t up elements</r
5f10: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
5f20: 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
5f30: 67 5b 5d 20 53 70 6c 69 74 28 73 74 72 69 6e 67  g[] Split(string
5f40: 20 73 6f 75 72 63 65 2c 20 63 68 61 72 20 73 65   source, char se
5f50: 70 61 72 61 74 6f 72 29 0d 0a 20 20 20 20 7b 0d  parator)..    {.
5f60: 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 74 6f  .      char[] to
5f70: 6b 73 20 3d 20 6e 65 77 20 63 68 61 72 5b 32 5d  ks = new char[2]
5f80: 20 7b 20 27 5c 22 27 2c 20 73 65 70 61 72 61 74   { '\"', separat
5f90: 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20 63 68 61  or };..      cha
5fa0: 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65 77 20 63  r[] quot = new c
5fb0: 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27 20 7d 3b  har[1] { '\"' };
5fc0: 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20  ..      int n = 
5fd0: 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c 73  0;..      List<s
5fe0: 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 20  tring> ls = new 
5ff0: 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d  List<string>();.
6000: 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 3b  .      string s;
6010: 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69 6c 65 20  ....      while 
6020: 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e  (source.Length >
6030: 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20   0)..      {..  
6040: 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65        n = source
6050: 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74 6f 6b 73  .IndexOfAny(toks
6060: 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  , n);..        i
6070: 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62 72 65 61  f (n == -1) brea
6080: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28  k;..        if (
6090: 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20 74 6f 6b  source[n] == tok
60a0: 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 7b  s[0])..        {
60b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f  ..          //so
60c0: 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 65  urce = source.Re
60d0: 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20  move(n, 1);..   
60e0: 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63         n = sourc
60f0: 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 71 75 6f  e.IndexOfAny(quo
6100: 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20 20 20 20  t, n + 1);..    
6110: 20 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d        if (n == -
6120: 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d  1)..          {.
6130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73  .            //s
6140: 6f 75 72 63 65 20 3d 20 22 5c 22 22 20 2b 20 73  ource = "\"" + s
6150: 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  ource;..        
6160: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
6170: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
6180: 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20     n++;..       
6190: 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f     //source = so
61a0: 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31  urce.Remove(n, 1
61b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
61c0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
61d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
61e0: 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 53 75 62    s = source.Sub
61f0: 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e 54 72 69  string(0, n).Tri
6200: 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m();..          
6210: 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31  if (s.Length > 1
6220: 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74   && s[0] == quot
6230: 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74  [0] && s[s.Lengt
6240: 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d  h - 1] == s[0]).
6250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 3d  .            s =
6260: 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20   s.Substring(1, 
6270: 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a  s.Length - 2);..
6280: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 72  ..          sour
6290: 63 65 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73  ce = source.Subs
62a0: 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e 54 72 69  tring(n + 1).Tri
62b0: 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  m();..          
62c0: 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 30  if (s.Length > 0
62d0: 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20  ) ls.Add(s);..  
62e0: 20 20 20 20 20 20 20 20 6e 20 3d 20 30 3b 0d 0a          n = 0;..
62f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6300: 20 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f   }..      if (so
6310: 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29  urce.Length > 0)
6320: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
6330: 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 54 72     s = source.Tr
6340: 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  im();..        i
6350: 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20  f (s.Length > 1 
6360: 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b  && s[0] == quot[
6370: 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68  0] && s[s.Length
6380: 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a   - 1] == s[0])..
6390: 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e            s = s.
63a0: 53 75 62 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c  Substring(1, s.L
63b0: 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20  ength - 2);..   
63c0: 20 20 20 20 20 6c 73 2e 41 64 64 28 73 29 3b 0d       ls.Add(s);.
63d0: 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
63e0: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 20 3d 20    string[] ar = 
63f0: 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73 2e 43 6f  new string[ls.Co
6400: 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 6c 73 2e  unt];..      ls.
6410: 43 6f 70 79 54 6f 28 61 72 2c 20 30 29 3b 0d 0a  CopyTo(ar, 0);..
6420: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 61  ..      return a
6430: 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  r;..    }....   
6440: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
6450: 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74 73 20 74      /// Splits t
6460: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 72  he specified str
6470: 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74 69 70 6c  ing into multipl
6480: 65 20 73 74 72 69 6e 67 73 20 62 61 73 65 64 20  e strings based 
6490: 6f 6e 20 61 20 73 65 70 61 72 61 74 6f 72 0d 0a  on a separator..
64a0: 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72 65 74 75      /// and retu
64b0: 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 20 61  rns the result a
64c0: 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74  s an array of st
64d0: 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rings...    /// 
64e0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
64f0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6500: 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f  "value">..    //
6510: 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20  / The string to 
6520: 73 70 6c 69 74 20 69 6e 74 6f 20 70 69 65 63 65  split into piece
6530: 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73  s based on the s
6540: 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 74  eparator charact
6550: 65 72 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f 2f  er.  If..    ///
6560: 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73 20   this string is 
6570: 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69 6c 6c 20  null, null will 
6580: 61 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 6e  always be return
6590: 65 64 2e 20 20 49 66 20 74 68 69 73 20 73 74 72  ed.  If this str
65a0: 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  ing is..    /// 
65b0: 65 6d 70 74 79 2c 20 61 6e 20 61 72 72 61 79 20  empty, an array 
65c0: 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e 67 73 20  of zero strings 
65d0: 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72  will always be r
65e0: 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f  eturned...    //
65f0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6600: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
6610: 22 73 65 70 61 72 61 74 6f 72 22 3e 0d 0a 20 20  "separator">..  
6620: 20 20 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 63    /// The charac
6630: 74 65 72 20 75 73 65 64 20 74 6f 20 64 69 76 69  ter used to divi
6640: 64 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  de the original 
6650: 73 74 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 2d  string into sub-
6660: 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f  strings...    //
6670: 2f 20 54 68 69 73 20 63 68 61 72 61 63 74 65 72  / This character
6680: 20 63 61 6e 6e 6f 74 20 62 65 20 61 20 62 61 63   cannot be a bac
6690: 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62  kslash or a doub
66a0: 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68 65 72 77  le-quote; otherw
66b0: 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20 2f 2f 2f  ise, no..    ///
66c0: 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65 20 70 65   work will be pe
66d0: 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e 75 6c 6c  rformed and null
66e0: 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65   will be returne
66f0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  d...    /// </pa
6700: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
6710: 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65 65 70 51  aram name="keepQ
6720: 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  uote">..    /// 
6730: 49 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 65  If this paramete
6740: 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61  r is non-zero, a
6750: 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20  ll double-quote 
6760: 63 68 61 72 61 63 74 65 72 73 20 77 69 6c 6c 20  characters will 
6770: 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 74 61  be..    /// reta
6780: 69 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 75  ined in the retu
6790: 72 6e 65 64 20 6c 69 73 74 20 6f 66 20 73 74 72  rned list of str
67a0: 69 6e 67 73 3b 20 6f 74 68 65 72 77 69 73 65 2c  ings; otherwise,
67b0: 20 74 68 65 79 20 77 69 6c 6c 20 62 65 0d 0a 20   they will be.. 
67c0: 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65 64 2e 0d     /// dropped..
67d0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
67e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
67f0: 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d  m name="error">.
6800: 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61  .    /// Upon fa
6810: 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 61  ilure, this para
6820: 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f  meter will be mo
6830: 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69  dified to contai
6840: 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65  n an appropriate
6850: 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 20  ..    /// error 
6860: 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f  message...    //
6870: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
6880: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
6890: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 61     /// The new a
68a0: 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20  rray of strings 
68b0: 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 69  or null if the i
68c0: 6e 70 75 74 20 73 74 72 69 6e 67 20 69 73 20 6e  nput string is n
68d0: 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d 0a 20 20  ull -OR- the..  
68e0: 20 20 2f 2f 2f 20 73 65 70 61 72 61 74 6f 72 20    /// separator 
68f0: 63 68 61 72 61 63 74 65 72 20 69 73 20 61 20 62  character is a b
6900: 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f  ackslash or a do
6910: 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f 52 2d 20  uble-quote -OR- 
6920: 74 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20  the string..    
6930: 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20  /// contains an 
6940: 75 6e 62 61 6c 61 6e 63 65 64 20 62 61 63 6b 73  unbalanced backs
6950: 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c 65 2d 71  lash or double-q
6960: 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 2e 0d  uote character..
6970: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
6980: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
6990: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b  l static string[
69a0: 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a 20 20 20  ] NewSplit(..   
69b0: 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75       string valu
69c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 63 68 61 72  e,..        char
69d0: 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 20   separator,..   
69e0: 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65 70 51 75       bool keepQu
69f0: 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65  ote,..        re
6a00: 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a  f string error..
6a10: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
6a20: 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20  ..        const 
6a30: 63 68 61 72 20 45 73 63 61 70 65 43 68 61 72 20  char EscapeChar 
6a40: 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20 20 20 20  = '\\';..       
6a50: 20 63 6f 6e 73 74 20 63 68 61 72 20 51 75 6f 74   const char Quot
6a60: 65 43 68 61 72 20 3d 20 27 5c 22 27 3b 0d 0a 0d  eChar = '\"';...
6a70: 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
6a80: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 74       // NOTE: It
6a90: 20 69 73 20 69 6c 6c 65 67 61 6c 20 66 6f 72 20   is illegal for 
6aa0: 74 68 65 20 73 65 70 61 72 61 74 6f 72 20 63 68  the separator ch
6ab0: 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 65 69  aracter to be ei
6ac0: 74 68 65 72 20 61 0d 0a 20 20 20 20 20 20 20 20  ther a..        
6ad0: 2f 2f 20 20 20 20 20 20 20 62 61 63 6b 73 6c 61  //       backsla
6ae0: 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71  sh or a double-q
6af0: 75 6f 74 65 20 62 65 63 61 75 73 65 20 62 6f 74  uote because bot
6b00: 68 20 6f 66 20 74 68 6f 73 65 20 63 68 61 72 61  h of those chara
6b10: 63 74 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f  cters..        /
6b20: 2f 20 20 20 20 20 20 20 61 72 65 20 75 73 65 64  /       are used
6b30: 20 66 6f 72 20 65 73 63 61 70 69 6e 67 20 6f 74   for escaping ot
6b40: 68 65 72 20 63 68 61 72 61 63 74 65 72 73 20 28  her characters (
6b50: 65 2e 67 2e 20 74 68 65 20 73 65 70 61 72 61 74  e.g. the separat
6b60: 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  or..        //  
6b70: 20 20 20 20 20 63 68 61 72 61 63 74 65 72 29 2e       character).
6b80: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
6b90: 20 20 20 20 20 20 69 66 20 28 28 73 65 70 61 72        if ((separ
6ba0: 61 74 6f 72 20 3d 3d 20 45 73 63 61 70 65 43 68  ator == EscapeCh
6bb0: 61 72 29 20 7c 7c 20 28 73 65 70 61 72 61 74 6f  ar) || (separato
6bc0: 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 29  r == QuoteChar))
6bd0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
6be0: 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
6bf0: 20 22 73 65 70 61 72 61 74 6f 72 20 63 68 61 72   "separator char
6c00: 61 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20  acter cannot be 
6c10: 74 68 65 20 65 73 63 61 70 65 20 6f 72 20 71 75  the escape or qu
6c20: 6f 74 65 20 63 68 61 72 61 63 74 65 72 73 22 3b  ote characters";
6c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
6c40: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
6c50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6c60: 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
6c70: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ll)..        {..
6c80: 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
6c90: 72 20 3d 20 22 73 74 72 69 6e 67 20 76 61 6c 75  r = "string valu
6ca0: 65 20 74 6f 20 73 70 6c 69 74 20 63 61 6e 6e 6f  e to split canno
6cb0: 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a 20 20 20  t be null";..   
6cc0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6cd0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d  null;..        }
6ce0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20  ....        int 
6cf0: 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c  length = value.L
6d00: 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20  ength;....      
6d10: 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20    if (length == 
6d20: 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0)..            
6d30: 72 65 74 75 72 6e 20 6e 65 77 20 73 74 72 69 6e  return new strin
6d40: 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  g[0];....       
6d50: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69   List<string> li
6d60: 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74  st = new List<st
6d70: 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20  ring>();..      
6d80: 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20    StringBuilder 
6d90: 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77 20 53 74  element = new St
6da0: 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a  ringBuilder();..
6db0: 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
6dc0: 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  x = 0;..        
6dd0: 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d 20 66 61  bool escape = fa
6de0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f  lse;..        bo
6df0: 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61 6c 73 65  ol quote = false
6e00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69  ;....        whi
6e10: 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c 65 6e 67  le (index < leng
6e20: 74 68 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  th)..        {..
6e30: 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 72              char
6e40: 20 63 68 61 72 61 63 74 65 72 20 3d 20 76 61 6c   character = val
6e50: 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d 0a 0d 0a  ue[index++];....
6e60: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6e70: 65 73 63 61 70 65 29 0d 0a 20 20 20 20 20 20 20  escape)..       
6e80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6e90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6ea0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48              // H
6eb0: 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e 73 69 64  ACK: Only consid
6ec0: 65 72 20 74 68 65 20 65 73 63 61 70 65 20 63 68  er the escape ch
6ed0: 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 61 6e  aracter to be an
6ee0: 20 61 63 74 75 61 6c 0d 0a 20 20 20 20 20 20 20   actual..       
6ef0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6f00: 20 20 22 65 73 63 61 70 65 22 20 69 66 20 69 74    "escape" if it
6f10: 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20   is followed by 
6f20: 61 20 72 65 73 65 72 76 65 64 20 63 68 61 72 61  a reserved chara
6f30: 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  cter;..         
6f40: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6f50: 6f 74 68 65 72 77 69 73 65 2c 20 65 6d 69 74 20  otherwise, emit 
6f60: 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 73 63  the original esc
6f70: 61 70 65 20 63 68 61 72 61 63 74 65 72 20 61 6e  ape character an
6f80: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
6f90: 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20     //       the 
6fa0: 63 75 72 72 65 6e 74 20 63 68 61 72 61 63 74 65  current characte
6fb0: 72 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74  r in an effort t
6fc0: 6f 20 68 65 6c 70 20 70 72 65 73 65 72 76 65 0d  o help preserve.
6fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6fe0: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 6f 72   //       the or
6ff0: 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 6f  iginal string co
7000: 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20  ntent...        
7010: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
7020: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7030: 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 45 73  (character != Es
7040: 63 61 70 65 43 68 61 72 29 20 26 26 0d 0a 20 20  capeChar) &&..  
7050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7060: 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d 20    (character != 
7070: 51 75 6f 74 65 43 68 61 72 29 20 26 26 0d 0a 20  QuoteChar) &&.. 
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7090: 20 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d     (character !=
70a0: 20 73 65 70 61 72 61 74 6f 72 29 29 0d 0a 20 20   separator))..  
70b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
70c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
70d0: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
70e0: 65 6e 64 28 45 73 63 61 70 65 43 68 61 72 29 3b  end(EscapeChar);
70f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7100: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7110: 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41         element.A
7120: 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29  ppend(character)
7130: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
7140: 20 20 20 65 73 63 61 70 65 20 3d 20 66 61 6c 73     escape = fals
7150: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
7160: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
7170: 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 65  lse if (characte
7180: 72 20 3d 3d 20 45 73 63 61 70 65 43 68 61 72 29  r == EscapeChar)
7190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
71a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
71b0: 20 65 73 63 61 70 65 20 3d 20 74 72 75 65 3b 0d   escape = true;.
71c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
71d0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
71e0: 20 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d   if (character =
71f0: 3d 20 51 75 6f 74 65 43 68 61 72 29 0d 0a 20 20  = QuoteChar)..  
7200: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7210: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7220: 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a 20 20 20  (keepQuote)..   
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28   element.Append(
7250: 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 0d 0a 20  character);.... 
7260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 71                 q
7270: 75 6f 74 65 20 3d 20 21 71 75 6f 74 65 3b 0d 0a  uote = !quote;..
7280: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7290: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
72a0: 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d  if (character ==
72b0: 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20   separator)..   
72c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
72e0: 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20  quote)..        
72f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
7310: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68  lement.Append(ch
7320: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20  aracter);..     
7330: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
7350: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
7360: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7370: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e             list.
7380: 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74  Add(element.ToSt
7390: 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20  ring());..      
73a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
73b0: 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3d 20 30  ement.Length = 0
73c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
73d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
73e0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
73f0: 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
7400: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7410: 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70        element.Ap
7420: 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b  pend(character);
7430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
7440: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7450: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7460: 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e 20 75 6e    // NOTE: An un
7470: 62 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20  balanced escape 
7480: 6f 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 74  or quote charact
7490: 65 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67  er in the string
74a0: 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   is..        // 
74b0: 20 20 20 20 20 20 63 6f 6e 73 69 64 65 72 65 64        considered
74c0: 20 74 6f 20 62 65 20 61 20 66 61 74 61 6c 20 65   to be a fatal e
74d0: 72 72 6f 72 3b 20 74 68 65 72 65 66 6f 72 65 2c  rror; therefore,
74e0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e 0d 0a 20   return null... 
74f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7500: 20 20 20 69 66 20 28 65 73 63 61 70 65 20 7c 7c     if (escape ||
7510: 20 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20   quote)..       
7520: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7530: 65 72 72 6f 72 20 3d 20 22 75 6e 62 61 6c 61 6e  error = "unbalan
7540: 63 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 75  ced escape or qu
7550: 6f 74 65 20 63 68 61 72 61 63 74 65 72 20 66 6f  ote character fo
7560: 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  und";..         
7570: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
7580: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7590: 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e        if (elemen
75a0: 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20  t.Length > 0).. 
75b0: 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e             list.
75c0: 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74  Add(element.ToSt
75d0: 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 20  ring());....    
75e0: 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e      return list.
75f0: 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20  ToArray();..    
7600: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
7610: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7620: 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75 65 20  Convert a value 
7630: 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65  to true or false
7640: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
7650: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
7660: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72  param name="sour
7670: 63 65 22 3e 41 20 73 74 72 69 6e 67 20 6f 72 20  ce">A string or 
7680: 6e 75 6d 62 65 72 20 72 65 70 72 65 73 65 6e 74  number represent
7690: 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61 6c 73  ing true or fals
76a0: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
76b0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
76c0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c  turns>..    publ
76d0: 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 54  ic static bool T
76e0: 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65 63 74 20  oBoolean(object 
76f0: 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b 0d 0a  source)..    {..
7700: 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65        if (source
7710: 20 69 73 20 62 6f 6f 6c 29 20 72 65 74 75 72 6e   is bool) return
7720: 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65 3b 0d 0a   (bool)source;..
7730: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54  ..      return T
7740: 6f 42 6f 6f 6c 65 61 6e 28 73 6f 75 72 63 65 2e  oBoolean(source.
7750: 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20  ToString());..  
7760: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
7770: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
7780: 2f 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 69  / Convert a stri
7790: 6e 67 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61  ng to true or fa
77a0: 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  lse...    /// </
77b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
77c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
77d0: 6f 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20  ource">A string 
77e0: 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75  representing tru
77f0: 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61  e or false</para
7800: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
7810: 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d  urns></returns>.
7820: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  .    /// <remark
7830: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 65 73  s>..    /// "yes
7840: 22 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e  ", "no", "y", "n
7850: 22 2c 20 22 30 22 2c 20 22 31 22 2c 20 22 6f 6e  ", "0", "1", "on
7860: 22 2c 20 22 6f 66 66 22 20 61 73 20 77 65 6c 6c  ", "off" as well
7870: 20 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73   as Boolean.Fals
7880: 65 53 74 72 69 6e 67 20 61 6e 64 20 42 6f 6f 6c  eString and Bool
7890: 65 61 6e 2e 54 72 75 65 53 74 72 69 6e 67 20 77  ean.TrueString w
78a0: 69 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20 20 20  ill all be..    
78b0: 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /// converted to
78c0: 20 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c 65 61   a proper boolea
78d0: 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  n value...    //
78e0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
78f0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
7900: 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73  bool ToBoolean(s
7910: 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20  tring source).. 
7920: 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 28     {..      if (
7930: 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73  String.Compare(s
7940: 6f 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 65  ource, bool.True
7950: 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f  String, StringCo
7960: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
7970: 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30  IgnoreCase) == 0
7980: 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ) return true;..
7990: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53        else if (S
79a0: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
79b0: 75 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 65  urce, bool.False
79c0: 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 6f  String, StringCo
79d0: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
79e0: 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30  IgnoreCase) == 0
79f0: 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d  ) return false;.
7a00: 0a 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 28  ...      switch(
7a10: 73 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72 28 43  source.ToLower(C
7a20: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
7a30: 69 61 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a 20  iantCulture)).. 
7a40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7a50: 63 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 20  case "yes":..   
7a60: 20 20 20 20 20 63 61 73 65 20 22 79 22 3a 0d 0a       case "y":..
7a70: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 31 22          case "1"
7a80: 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  :..        case 
7a90: 22 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  "on":..         
7aa0: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
7ab0: 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 6f 22         case "no"
7ac0: 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20  :..        case 
7ad0: 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61  "n":..        ca
7ae0: 73 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 20  se "0":..       
7af0: 20 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a 20 20   case "off":..  
7b00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
7b10: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 64  alse;..        d
7b20: 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20  efault:..       
7b30: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
7b40: 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22  umentException("
7b50: 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 20  source");..     
7b60: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
7b70: 20 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 6f   #region Type Co
7b80: 6e 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 2f  nversions..    /
7b90: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7ba0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
7bb0: 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f 20 61   SQLiteType to a
7bc0: 20 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a 65 63   .NET Type objec
7bd0: 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  t..    /// </sum
7be0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
7bf0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 22 3e 54  param name="t">T
7c00: 68 65 20 53 51 4c 69 74 65 54 79 70 65 20 74 6f  he SQLiteType to
7c10: 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e   convert</param>
7c20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
7c30: 6e 73 3e 52 65 74 75 72 6e 73 20 61 20 2e 4e 45  ns>Returns a .NE
7c40: 54 20 54 79 70 65 20 6f 62 6a 65 63 74 3c 2f 72  T Type object</r
7c50: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
7c60: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
7c70: 65 20 53 51 4c 69 74 65 54 79 70 65 54 6f 54 79  e SQLiteTypeToTy
7c80: 70 65 28 53 51 4c 69 74 65 54 79 70 65 20 74 29  pe(SQLiteType t)
7c90: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
7ca0: 66 20 28 74 2e 54 79 70 65 20 3d 3d 20 44 62 54  f (t.Type == DbT
7cb0: 79 70 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20 20  ype.Object)..   
7cc0: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 61 66 66       return _aff
7cd0: 69 6e 69 74 79 74 6f 74 79 70 65 5b 28 69 6e 74  initytotype[(int
7ce0: 29 74 2e 41 66 66 69 6e 69 74 79 5d 3b 0d 0a 20  )t.Affinity];.. 
7cf0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
7d00: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
7d10: 43 6f 6e 76 65 72 74 2e 44 62 54 79 70 65 54 6f  Convert.DbTypeTo
7d20: 54 79 70 65 28 74 2e 54 79 70 65 29 3b 0d 0a 20  Type(t.Type);.. 
7d30: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
7d40: 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65 5b  ate static Type[
7d50: 5d 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70  ] _affinitytotyp
7d60: 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70  e = {..      typ
7d70: 65 6f 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f  eof(object),   /
7d80: 2f 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20  / Uninitialized 
7d90: 28 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (0)..      typeo
7da0: 66 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20  f(Int64),    // 
7db0: 49 6e 74 36 34 20 28 31 29 0d 0a 20 20 20 20 20  Int64 (1)..     
7dc0: 20 74 79 70 65 6f 66 28 44 6f 75 62 6c 65 29 2c   typeof(Double),
7dd0: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 32 29     // Double (2)
7de0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
7df0: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 54 65 78  tring),   // Tex
7e00: 74 20 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70  t (3)..      typ
7e10: 65 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f  eof(byte[]),   /
7e20: 2f 20 42 6c 6f 62 20 28 34 29 0d 0a 20 20 20 20  / Blob (4)..    
7e30: 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29    typeof(object)
7e40: 2c 20 20 20 2f 2f 20 4e 75 6c 6c 20 28 35 29 0d  ,   // Null (5).
7e50: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 61  .      typeof(Da
7e60: 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65  teTime), // Date
7e70: 54 69 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20  Time (10)..     
7e80: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20   typeof(object) 
7e90: 20 20 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d     // None (11).
7ea0: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
7eb0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
7ec0: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
7ed0: 6e 20 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65  n intrinsic type
7ee0: 2c 20 72 65 74 75 72 6e 20 61 20 44 62 54 79 70  , return a DbTyp
7ef0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
7f00: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
7f10: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
7f20: 3e 54 68 65 20 6e 61 74 69 76 65 20 74 79 70 65  >The native type
7f30: 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72   to convert</par
7f40: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7f50: 74 75 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73  turns>The corres
7f60: 70 6f 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74  ponding (closest
7f70: 20 6d 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f   match) DbType</
7f80: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
7f90: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62  ternal static Db
7fa0: 54 79 70 65 20 54 79 70 65 54 6f 44 62 54 79 70  Type TypeToDbTyp
7fb0: 65 28 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  e(Type typ)..   
7fc0: 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f   {..      TypeCo
7fd0: 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74  de tc = Type.Get
7fe0: 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a  TypeCode(typ);..
7ff0: 20 20 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20        if (tc == 
8000: 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29  TypeCode.Object)
8010: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
8020: 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79     if (typ == ty
8030: 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65  peof(byte[])) re
8040: 74 75 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61  turn DbType.Bina
8050: 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ry;..        if 
8060: 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47  (typ == typeof(G
8070: 75 69 64 29 29 20 72 65 74 75 72 6e 20 44 62 54  uid)) return DbT
8080: 79 70 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20  ype.Guid;..     
8090: 20 20 20 72 65 74 75 72 6e 20 44 62 54 79 70 65     return DbType
80a0: 2e 53 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20  .String;..      
80b0: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
80c0: 5f 74 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69  _typetodbtype[(i
80d0: 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a  nt)tc];..    }..
80e0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
80f0: 61 74 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74  atic DbType[] _t
8100: 79 70 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d  ypetodbtype = {.
8110: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62  .      DbType.Ob
8120: 6a 65 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79  ject,   // Empty
8130: 20 28 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (0)..      DbTy
8140: 70 65 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20  pe.Binary,   // 
8150: 4f 62 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20  Object (1)..    
8160: 20 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c    DbType.Object,
8170: 20 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29     // DBNull (2)
8180: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
8190: 6f 6f 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c  oolean,  // Bool
81a0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44  ean (3)..      D
81b0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20  bType.SByte,    
81c0: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
81d0: 20 20 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c     DbType.SByte,
81e0: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29      // SByte (5)
81f0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 42  ..      DbType.B
8200: 79 74 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65  yte,     // Byte
8210: 20 28 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (6)..      DbTy
8220: 70 65 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20  pe.Int16,    // 
8230: 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20  Int16 (7)..     
8240: 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20   DbType.UInt16, 
8250: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d    // UInt16 (8).
8260: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e  .      DbType.In
8270: 74 33 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32  t32,    // Int32
8280: 20 28 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79   (9)..      DbTy
8290: 70 65 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20  pe.UInt32,   // 
82a0: 55 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20  UInt32 (10)..   
82b0: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c     DbType.Int64,
82c0: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31      // Int64 (11
82d0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
82e0: 55 49 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e  UInt64,   // UIn
82f0: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
8300: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20  DbType.Single,  
8310: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d   // Single (13).
8320: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f  .      DbType.Do
8330: 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c  uble,   // Doubl
8340: 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62  e (14)..      Db
8350: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f  Type.Decimal,  /
8360: 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a  / Decimal (15)..
8370: 20 20 20 20 20 20 44 62 54 79 70 65 2e 44 61 74        DbType.Dat
8380: 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69  eTime, // DateTi
8390: 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44  me (16)..      D
83a0: 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20  bType.Object,   
83b0: 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20  // ?? (17)..    
83c0: 20 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20    DbType.String 
83d0: 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38     // String (18
83e0: 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20  )..    };....   
83f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
8400: 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20      /// Returns 
8410: 74 68 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66  the ColumnSize f
8420: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 44 62 54  or the given DbT
8430: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
8440: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
8450: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
8460: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
8470: 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66   get the size of
8480: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
8490: 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74  / <returns></ret
84a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
84b0: 6e 61 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44  nal static int D
84c0: 62 54 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a  bTypeToColumnSiz
84d0: 65 28 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20  e(DbType typ).. 
84e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
84f0: 72 6e 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  rn _dbtypetocolu
8500: 6d 6e 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d  mnsize[(int)typ]
8510: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
8520: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69  private static i
8530: 6e 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f  nt[] _dbtypetoco
8540: 6c 75 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20  lumnsize = {..  
8550: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
8560: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20  , // AnsiString 
8570: 28 30 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  (0)..      int.M
8580: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61  axValue, // Bina
8590: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c  ry (1)..      1,
85a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
85b0: 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31  yte (2)..      1
85c0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
85d0: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
85e0: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
85f0: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
8600: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
8610: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35        // Date (5
8620: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
8630: 20 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69         // DateTi
8640: 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c  me (6)..      8,
8650: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44              // D
8660: 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20  ecimal (7)..    
8670: 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20    8,            
8680: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
8690: 20 20 20 20 20 31 36 2c 20 20 20 20 20 20 20 20       16,        
86a0: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
86b0: 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 20        2,        
86c0: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30      // Int16 (10
86d0: 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20  )..      4,     
86e0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20         // Int32 
86f0: 28 31 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (11)..      8,  
8700: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
8710: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69  64 (12)..      i
8720: 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20  nt.MaxValue, // 
8730: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
8740: 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 20 20     1,           
8750: 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a   // SByte (14)..
8760: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
8770: 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31      // Single (1
8780: 35 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61  5)..      int.Ma
8790: 78 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  xValue, // Strin
87a0: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c  g (16)..      8,
87b0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54              // T
87c0: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
87d0: 32 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  2,            //
87e0: 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20   UInt16 (18)..  
87f0: 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20      4,          
8800: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29    // UInt32 (19)
8810: 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20  ..      8,      
8820: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20        // UInt64 
8830: 28 32 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (20)..      8,  
8840: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72            // Var
8850: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
8860: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
8870: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46  , // AnsiStringF
8880: 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d  ixedLength (22).
8890: 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61  .      int.MaxVa
88a0: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69  lue, // StringFi
88b0: 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a  xedLength (23)..
88c0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
88d0: 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ue, // ?? (24)..
88e0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
88f0: 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ue  // Xml (25).
8900: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69  .    };....    i
8910: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f  nternal static o
8920: 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75  bject DbTypeToNu
8930: 6d 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28 44  mericPrecision(D
8940: 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20  bType typ)..    
8950: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
8960: 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63  _dbtypetonumeric
8970: 70 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29 74  precision[(int)t
8980: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
8990: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
89a0: 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74 79  c object[] _dbty
89b0: 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63 69  petonumericpreci
89c0: 73 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20 20  sion = {..      
89d0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
89e0: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
89f0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
8a00: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
8a10: 31 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20 20  1)..      3,    
8a20: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
8a30: 28 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (2)..      DBNul
8a40: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c  l.Value, // Bool
8a50: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 31  ean (3)..      1
8a60: 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  9,           // 
8a70: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
8a80: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
8a90: 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20  , // Date (5).. 
8aa0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
8ab0: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
8ac0: 36 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20  6)..      53,   
8ad0: 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69 6d          // Decim
8ae0: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35 33  al (7)..      53
8af0: 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44  ,           // D
8b00: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
8b10: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
8b20: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
8b30: 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 20    5,            
8b40: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
8b50: 20 20 20 20 20 31 30 2c 20 20 20 20 20 20 20 20       10,        
8b60: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
8b70: 0d 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20 20  ..      19,     
8b80: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
8b90: 31 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  12)..      DBNul
8ba0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  l.Value, // Obje
8bb0: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 33  ct (13)..      3
8bc0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
8bd0: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
8be0: 20 20 32 34 2c 20 20 20 20 20 20 20 20 20 20 20    24,           
8bf0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
8c00: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
8c10: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
8c20: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
8c30: 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20  .Value, // Time 
8c40: 28 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20 20  (17)..      5,  
8c50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
8c60: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
8c70: 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  10,           //
8c80: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
8c90: 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20 20      19,         
8ca0: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
8cb0: 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20 20  ..      53,     
8cc0: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
8cd0: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
8ce0: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
8cf0: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
8d00: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
8d10: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
8d20: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
8d30: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
8d40: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
8d50: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
8d60: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20    DBNull.Value  
8d70: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
8d80: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72   };....    inter
8d90: 6e 61 6c 20 73 74 61 74 69 63 20 6f 62 6a 65 63  nal static objec
8da0: 74 20 44 62 54 79 70 65 54 6f 4e 75 6d 65 72 69  t DbTypeToNumeri
8db0: 63 53 63 61 6c 65 28 44 62 54 79 70 65 20 74 79  cScale(DbType ty
8dc0: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
8dd0: 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74   return _dbtypet
8de0: 6f 6e 75 6d 65 72 69 63 73 63 61 6c 65 5b 28 69  onumericscale[(i
8df0: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
8e00: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
8e10: 74 61 74 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f  tatic object[] _
8e20: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73  dbtypetonumerics
8e30: 63 61 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20  cale = {..      
8e40: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
8e50: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
8e60: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
8e70: 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20 28  lue, // Binary (
8e80: 31 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20  1)..      0,    
8e90: 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65 20          // Byte 
8ea0: 28 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (2)..      DBNul
8eb0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f 6c  l.Value, // Bool
8ec0: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 34  ean (3)..      4
8ed0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
8ee0: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
8ef0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
8f00: 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20  , // Date (5).. 
8f10: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
8f20: 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28  e, // DateTime (
8f30: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
8f40: 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 65 63 69 6d  .Value, // Decim
8f50: 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 44 42  al (7)..      DB
8f60: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44  Null.Value, // D
8f70: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
8f80: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
8f90: 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20  / Guid (9)..    
8fa0: 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20    0,            
8fb0: 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20  // Int16 (10).. 
8fc0: 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20       0,         
8fd0: 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29     // Int32 (11)
8fe0: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
8ff0: 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28        // Int64 (
9000: 31 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  12)..      DBNul
9010: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a 65  l.Value, // Obje
9020: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 30  ct (13)..      0
9030: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
9040: 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20  SByte (14)..    
9050: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
9060: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d 0a  // Single (15)..
9070: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
9080: 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ue, // String (1
9090: 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  6)..      DBNull
90a0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65 20  .Value, // Time 
90b0: 28 31 37 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (17)..      0,  
90c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e            // UIn
90d0: 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20  t16 (18)..      
90e0: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
90f0: 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20 20   UInt32 (19)..  
9100: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
9110: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
9120: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
9130: 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65        // VarNume
9140: 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20  ric (21)..      
9150: 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f  DBNull.Value, //
9160: 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64   AnsiStringFixed
9170: 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20  Length (22)..   
9180: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
9190: 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64 4c   // StringFixedL
91a0: 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20 20  ength (23)..    
91b0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
91c0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
91d0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 20 20    DBNull.Value  
91e0: 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20  // Xml (25)..   
91f0: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
9200: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
9210: 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68 65  / Determines the
9220: 20 74 79 70 65 20 6e 61 6d 65 20 66 6f 72 20 74   type name for t
9230: 68 65 20 67 69 76 65 6e 20 64 61 74 61 62 61 73  he given databas
9240: 65 20 76 61 6c 75 65 20 74 79 70 65 2e 0d 0a 20  e value type... 
9250: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
9260: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
9270: 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65  m name="typ">The
9280: 20 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20   database value 
9290: 74 79 70 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  type.</param>.. 
92a0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
92b0: 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68 65 20 66  me="flags">The f
92c0: 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64 20  lags associated 
92d0: 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74 20  with the parent 
92e0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63  connection objec
92f0: 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  t.</param>..    
9300: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
9310: 20 74 79 70 65 20 6e 61 6d 65 20 6f 72 20 61 6e   type name or an
9320: 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 69 66   empty string if
9330: 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65   it cannot be de
9340: 74 65 72 6d 69 6e 65 64 2e 3c 2f 72 65 74 75 72  termined.</retur
9350: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
9360: 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  l static string 
9370: 44 62 54 79 70 65 54 6f 54 79 70 65 4e 61 6d 65  DbTypeToTypeName
9380: 28 44 62 54 79 70 65 20 74 79 70 2c 20 53 51 4c  (DbType typ, SQL
9390: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
93a0: 67 73 20 66 6c 61 67 73 29 0d 0a 20 20 20 20 7b  gs flags)..    {
93b0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28  ..        lock (
93c0: 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20  _syncRoot)..    
93d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
93e0: 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
93f0: 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s == null)..    
9400: 20 20 20 20 20 20 20 20 20 20 20 20 5f 74 79 70              _typ
9410: 65 4e 61 6d 65 73 20 3d 20 47 65 74 53 51 4c 69  eNames = GetSQLi
9420: 74 65 44 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a  teDbTypeMap();..
9430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
9440: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
9450: 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
9460: 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70          if (_typ
9470: 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c  eNames.TryGetVal
9480: 75 65 28 74 79 70 2c 20 6f 75 74 20 76 61 6c 75  ue(typ, out valu
9490: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
94a0: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
94b0: 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20  e.typeName;..   
94c0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
94d0: 20 20 73 74 72 69 6e 67 20 64 65 66 61 75 6c 74    string default
94e0: 54 79 70 65 4e 61 6d 65 20 3d 20 53 74 72 69 6e  TypeName = Strin
94f0: 67 2e 45 6d 70 74 79 3b 0d 0a 0d 0a 23 69 66 20  g.Empty;....#if 
9500: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
9510: 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47  && TRACE_WARNING
9520: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 66  ..        if ((f
9530: 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f 6e  lags & SQLiteCon
9540: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61  nectionFlags.Tra
9550: 63 65 57 61 72 6e 69 6e 67 29 20 3d 3d 20 53 51  ceWarning) == SQ
9560: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
9570: 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67  ags.TraceWarning
9580: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
9590: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
95a0: 57 72 69 74 65 4c 69 6e 65 28 53 74 72 69 6e 67  WriteLine(String
95b0: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
95c0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
95d0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
95e0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
95f0: 20 20 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a         "WARNING:
9600: 20 54 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61   Type mapping fa
9610: 69 6c 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20  iled, returning 
9620: 64 65 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b  default name \"{
9630: 30 7d 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31  0}\" for type {1
9640: 7d 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  }.",..          
9650: 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70        defaultTyp
9660: 65 4e 61 6d 65 2c 20 74 79 70 29 29 3b 0d 0a 20  eName, typ));.. 
9670: 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66         }..#endif
9680: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
9690: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
96a0: 6d 65 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  me;..    }....  
96b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
96c0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
96d0: 20 61 20 44 62 54 79 70 65 20 74 6f 20 61 20 54   a DbType to a T
96e0: 79 70 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ype..    /// </s
96f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
9700: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79   <param name="ty
9710: 70 22 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f  p">The DbType to
9720: 20 63 6f 6e 76 65 72 74 20 66 72 6f 6d 3c 2f 70   convert from</p
9730: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
9740: 72 65 74 75 72 6e 73 3e 54 68 65 20 63 6c 6f 73  returns>The clos
9750: 65 73 74 2d 6d 61 74 63 68 20 2e 4e 45 54 20 74  est-match .NET t
9760: 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ype</returns>.. 
9770: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
9780: 69 63 20 54 79 70 65 20 44 62 54 79 70 65 54 6f  ic Type DbTypeTo
9790: 54 79 70 65 28 44 62 54 79 70 65 20 74 79 70 29  Type(DbType typ)
97a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72  ..    {..      r
97b0: 65 74 75 72 6e 20 5f 64 62 74 79 70 65 54 6f 54  eturn _dbtypeToT
97c0: 79 70 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a  ype[(int)typ];..
97d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
97e0: 76 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65  vate static Type
97f0: 5b 5d 20 5f 64 62 74 79 70 65 54 6f 54 79 70 65  [] _dbtypeToType
9800: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65   = {..      type
9810: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f  of(string),   //
9820: 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29 0d   AnsiString (0).
9830: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62 79  .      typeof(by
9840: 74 65 5b 5d 29 2c 20 20 20 2f 2f 20 42 69 6e 61  te[]),   // Bina
9850: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79  ry (1)..      ty
9860: 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20 20  peof(byte),     
9870: 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20  // Byte (2)..   
9880: 20 20 20 74 79 70 65 6f 66 28 62 6f 6f 6c 29 2c     typeof(bool),
9890: 20 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20       // Boolean 
98a0: 28 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (3)..      typeo
98b0: 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20  f(decimal),  // 
98c0: 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20  Currency (4)..  
98d0: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
98e0: 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 20 28 35  ime), // Date (5
98f0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
9900: 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 61  DateTime), // Da
9910: 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20  teTime (6)..    
9920: 20 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c    typeof(decimal
9930: 29 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28  ),  // Decimal (
9940: 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  7)..      typeof
9950: 28 64 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44  (double),   // D
9960: 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20 20  ouble (8)..     
9970: 20 74 79 70 65 6f 66 28 47 75 69 64 29 2c 20 20   typeof(Guid),  
9980: 20 20 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a     // Guid (9)..
9990: 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74        typeof(Int
99a0: 31 36 29 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36  16),    // Int16
99b0: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74 79 70   (10)..      typ
99c0: 65 6f 66 28 49 6e 74 33 32 29 2c 20 20 20 20 2f  eof(Int32),    /
99d0: 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20  / Int32 (11)..  
99e0: 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34      typeof(Int64
99f0: 29 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28  ),    // Int64 (
9a00: 31 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  12)..      typeo
9a10: 66 28 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20  f(object),   // 
9a20: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
9a30: 20 20 20 74 79 70 65 6f 66 28 73 62 79 74 65 29     typeof(sbyte)
9a40: 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31  ,    // SByte (1
9a50: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  4)..      typeof
9a60: 28 66 6c 6f 61 74 29 2c 20 20 20 20 2f 2f 20 53  (float),    // S
9a70: 69 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20  ingle (15)..    
9a80: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
9a90: 2c 20 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31  ,   // String (1
9aa0: 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  6)..      typeof
9ab0: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 54  (DateTime), // T
9ac0: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
9ad0: 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c 20  typeof(UInt16), 
9ae0: 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29    // UInt16 (18)
9af0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 55  ..      typeof(U
9b00: 49 6e 74 33 32 29 2c 20 20 20 2f 2f 20 55 49 6e  Int32),   // UIn
9b10: 74 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20  t32 (19)..      
9b20: 74 79 70 65 6f 66 28 55 49 6e 74 36 34 29 2c 20  typeof(UInt64), 
9b30: 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29    // UInt64 (20)
9b40: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64  ..      typeof(d
9b50: 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 56 61 72  ouble),   // Var
9b60: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
9b70: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
9b80: 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74 72  g),   // AnsiStr
9b90: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28  ingFixedLength (
9ba0: 32 32 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  22)..      typeo
9bb0: 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20  f(string),   // 
9bc0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
9bd0: 68 20 28 32 33 29 0d 0a 20 20 20 20 20 20 74 79  h (23)..      ty
9be0: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
9bf0: 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20 20  // ?? (24)..    
9c00: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
9c10: 2c 20 20 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ,   // Xml (25).
9c20: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
9c30: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
9c40: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
9c50: 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74  n type, return t
9c60: 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  he closest-match
9c70: 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66 69   SQLite TypeAffi
9c80: 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c 79  nity, which only
9c90: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20 76   understands a v
9ca0: 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62 73  ery limited subs
9cb0: 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20 20  et of types...  
9cc0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
9cd0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
9ce0: 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20   name="typ">The 
9cf0: 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74 65  type to evaluate
9d00: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
9d10: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 53  / <returns>The S
9d20: 51 4c 69 74 65 20 74 79 70 65 20 61 66 66 69 6e  QLite type affin
9d30: 69 74 79 20 66 6f 72 20 74 68 61 74 20 74 79 70  ity for that typ
9d40: 65 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  e.</returns>..  
9d50: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9d60: 63 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 54  c TypeAffinity T
9d70: 79 70 65 54 6f 41 66 66 69 6e 69 74 79 28 54 79  ypeToAffinity(Ty
9d80: 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a  pe typ)..    {..
9d90: 20 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74        TypeCode t
9da0: 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79 70 65  c = Type.GetType
9db0: 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20 20 20  Code(typ);..    
9dc0: 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79 70 65    if (tc == Type
9dd0: 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a 20 20  Code.Object)..  
9de0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
9df0: 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65 6f 66  f (typ == typeof
9e00: 28 62 79 74 65 5b 5d 29 20 7c 7c 20 74 79 70 20  (byte[]) || typ 
9e10: 3d 3d 20 74 79 70 65 6f 66 28 47 75 69 64 29 29  == typeof(Guid))
9e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
9e30: 72 6e 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e  rn TypeAffinity.
9e40: 42 6c 6f 62 3b 0d 0a 20 20 20 20 20 20 20 20 65  Blob;..        e
9e50: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 72  lse..          r
9e60: 65 74 75 72 6e 20 54 79 70 65 41 66 66 69 6e 69  eturn TypeAffini
9e70: 74 79 2e 54 65 78 74 3b 0d 0a 20 20 20 20 20 20  ty.Text;..      
9e80: 7d 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  }..      return 
9e90: 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74  _typecodeAffinit
9ea0: 69 65 73 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a 20  ies[(int)tc];.. 
9eb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76     }....    priv
9ec0: 61 74 65 20 73 74 61 74 69 63 20 54 79 70 65 41  ate static TypeA
9ed0: 66 66 69 6e 69 74 79 5b 5d 20 5f 74 79 70 65 63  ffinity[] _typec
9ee0: 6f 64 65 41 66 66 69 6e 69 74 69 65 73 20 3d 20  odeAffinities = 
9ef0: 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  {..      TypeAff
9f00: 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20  inity.Null,     
9f10: 2f 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20  // Empty (0)..  
9f20: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
9f30: 2e 42 6c 6f 62 2c 20 20 20 20 20 2f 2f 20 4f 62  .Blob,     // Ob
9f40: 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20  ject (1)..      
9f50: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
9f60: 6c 2c 20 20 20 20 20 2f 2f 20 44 42 4e 75 6c 6c  l,     // DBNull
9f70: 20 28 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (2)..      Type
9f80: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
9f90: 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33     // Boolean (3
9fa0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
9fb0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
9fc0: 2f 2f 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20  // Char (4)..   
9fd0: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
9fe0: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 53 42 79  Int64,    // SBy
9ff0: 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 54 79  te (5)..      Ty
a000: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
a010: 2c 20 20 20 20 2f 2f 20 42 79 74 65 20 28 36 29  ,    // Byte (6)
a020: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
a030: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
a040: 2f 20 49 6e 74 31 36 20 28 37 29 0d 0a 20 20 20  / Int16 (7)..   
a050: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
a060: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
a070: 74 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 54  t16 (8)..      T
a080: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36  ypeAffinity.Int6
a090: 34 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28  4,    // Int32 (
a0a0: 39 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  9)..      TypeAf
a0b0: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
a0c0: 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 30 29 0d   // UInt32 (10).
a0d0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
a0e0: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
a0f0: 20 49 6e 74 36 34 20 28 31 31 29 0d 0a 20 20 20   Int64 (11)..   
a100: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
a110: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
a120: 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20  t64 (12)..      
a130: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75  TypeAffinity.Dou
a140: 62 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c 65  ble,   // Single
a150: 20 28 31 33 29 0d 0a 20 20 20 20 20 20 54 79 70   (13)..      Typ
a160: 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65  eAffinity.Double
a170: 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 31  ,   // Double (1
a180: 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  4)..      TypeAf
a190: 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20  finity.Double,  
a1a0: 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 31 35 29   // Decimal (15)
a1b0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
a1c0: 6e 69 74 79 2e 44 61 74 65 54 69 6d 65 2c 20 2f  nity.DateTime, /
a1d0: 2f 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d  / DateTime (16).
a1e0: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
a1f0: 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f  ity.Null,     //
a200: 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20   ?? (17)..      
a210: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78  TypeAffinity.Tex
a220: 74 20 20 20 20 20 20 2f 2f 20 53 74 72 69 6e 67  t      // String
a230: 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d   (18)..    };...
a240: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
a250: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 42 75 69 6c  y>..    /// Buil
a260: 64 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  ds and returns a
a270: 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67 20   map containing 
a280: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6c  the database col
a290: 75 6d 6e 20 74 79 70 65 73 0d 0a 20 20 20 20 2f  umn types..    /
a2a0: 2f 2f 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79  // recognized by
a2b0: 20 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d   this provider..
a2c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
a2d0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  ry>..    /// <re
a2e0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
a2f0: 41 20 6d 61 70 20 63 6f 6e 74 61 69 6e 69 6e 67  A map containing
a300: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
a310: 6c 75 6d 6e 20 74 79 70 65 73 20 72 65 63 6f 67  lumn types recog
a320: 6e 69 7a 65 64 20 62 79 20 74 68 69 73 0d 0a 20  nized by this.. 
a330: 20 20 20 2f 2f 2f 20 70 72 6f 76 69 64 65 72 2e     /// provider.
a340: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
a350: 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  rns>..    privat
a360: 65 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 44  e static SQLiteD
a370: 62 54 79 70 65 4d 61 70 20 47 65 74 53 51 4c 69  bTypeMap GetSQLi
a380: 74 65 44 62 54 79 70 65 4d 61 70 28 29 0d 0a 20  teDbTypeMap().. 
a390: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
a3a0: 74 75 72 6e 20 6e 65 77 20 53 51 4c 69 74 65 44  turn new SQLiteD
a3b0: 62 54 79 70 65 4d 61 70 28 6e 65 77 20 53 51 4c  bTypeMap(new SQL
a3c0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
a3d0: 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20  [] {..          
a3e0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
a3f0: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 49 4e  peMapping("BIGIN
a400: 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  T", DbType.Int64
a410: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
a420: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
a430: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
a440: 42 49 47 55 49 4e 54 22 2c 20 44 62 54 79 70 65  BIGUINT", DbType
a450: 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
a460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
a470: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
a480: 70 70 69 6e 67 28 22 42 49 4e 41 52 59 22 2c 20  pping("BINARY", 
a490: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
a4a0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
a4b0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
a4c0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 54  TypeMapping("BIT
a4d0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
a4e0: 6e 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  n, true),..     
a4f0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
a500: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
a510: 42 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e 42 69  BLOB", DbType.Bi
a520: 6e 61 72 79 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nary, true),..  
a530: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
a540: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
a550: 67 28 22 42 4f 4f 4c 22 2c 20 44 62 54 79 70 65  g("BOOL", DbType
a560: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
a570: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
a580: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
a590: 61 70 70 69 6e 67 28 22 42 4f 4f 4c 45 41 4e 22  apping("BOOLEAN"
a5a0: 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e  , DbType.Boolean
a5b0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
a5c0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
a5d0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
a5e0: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e  CHAR", DbType.An
a5f0: 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e  siStringFixedLen
a600: 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gth, true),..   
a610: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
a620: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
a630: 28 22 43 4c 4f 42 22 2c 20 44 62 54 79 70 65 2e  ("CLOB", DbType.
a640: 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d  String, false),.
a650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
a660: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
a670: 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 2c 20  ping("COUNTER", 
a680: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61  DbType.Int64, fa
a690: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
a6a0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
a6b0: 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 52 52  ypeMapping("CURR
a6c0: 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e 44 65  ENCY", DbType.De
a6d0: 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a  cimal, false),..
a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
a6f0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
a700: 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 54 79  ing("DATE", DbTy
a710: 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
a720: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
a730: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
a740: 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 45 54  peMapping("DATET
a750: 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74  IME", DbType.Dat
a760: 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d 0a 20  eTime, true),.. 
a770: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
a780: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
a790: 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 44 62  ng("DECIMAL", Db
a7a0: 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 74 72  Type.Decimal, tr
a7b0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
a7c0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
a7d0: 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 42 4c  peMapping("DOUBL
a7e0: 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  E", DbType.Doubl
a7f0: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
a800: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
a810: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
a820: 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 65 2e  "FLOAT", DbType.
a830: 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
a840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
a850: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
a860: 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 2c 20  ping("GENERAL", 
a870: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66  DbType.Binary, f
a880: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
a890: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
a8a0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 55 49  TypeMapping("GUI
a8b0: 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 64 2c  D", DbType.Guid,
a8c0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
a8d0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
a8e0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
a8f0: 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 70 65  DENTITY", DbType
a900: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
a910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
a920: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
a930: 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 44 62  ping("IMAGE", Db
a940: 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c  Type.Binary, fal
a950: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
a960: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
a970: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 22 2c  peMapping("INT",
a980: 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 74   DbType.Int32, t
a990: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
a9a0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
a9b0: 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 38  ypeMapping("INT8
a9c0: 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c  ", DbType.SByte,
a9d0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
a9e0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
a9f0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
aa00: 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e  NT16", DbType.In
aa10: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t16, false),..  
aa20: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
aa30: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
aa40: 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 79 70  g("INT32", DbTyp
aa50: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
aa60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
aa70: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
aa80: 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c 20 44  pping("INT64", D
aa90: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
aaa0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
aab0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
aac0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
aad0: 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  ER", DbType.Int6
aae0: 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  4, true),..     
aaf0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ab00: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
ab10: 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
ab20: 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 29 2c  e.SByte, false),
ab30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ab40: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ab50: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 31 36  pping("INTEGER16
ab60: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c  ", DbType.Int16,
ab70: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ab80: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ab90: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49  DbTypeMapping("I
aba0: 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
abb0: 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  e.Int32, false),
abc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
abd0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
abe0: 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 36 34  pping("INTEGER64
abf0: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
ac00: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ac10: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ac20: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
ac30: 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 65 2e  OGICAL", DbType.
ac40: 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c  Boolean, false),
ac50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ac60: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ac70: 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 44 62  pping("LONG", Db
ac80: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
ac90: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
aca0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
acb0: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 43 48  eMapping("LONGCH
acc0: 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  AR", DbType.Stri
acd0: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
ace0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
acf0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ad00: 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 62 54  ("LONGTEXT", DbT
ad10: 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
ad20: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
ad30: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
ad40: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 56 41  eMapping("LONGVA
ad50: 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53  RCHAR", DbType.S
ad60: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
ad70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ad80: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ad90: 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 54 79  ing("MEMO", DbTy
ada0: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65  pe.String, false
adb0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
adc0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
add0: 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 22 2c  Mapping("MONEY",
ade0: 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c   DbType.Decimal,
adf0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ae00: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ae10: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e  DbTypeMapping("N
ae20: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74  CHAR", DbType.St
ae30: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c  ringFixedLength,
ae40: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
ae50: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
ae60: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 4f  bTypeMapping("NO
ae70: 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  TE", DbType.Stri
ae80: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
ae90: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
aea0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
aeb0: 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 70 65  ("NTEXT", DbType
aec0: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
aed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
aee0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
aef0: 70 70 69 6e 67 28 22 4e 55 4d 42 45 52 22 2c 20  pping("NUMBER", 
af00: 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
af10: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
af20: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
af30: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55  bTypeMapping("NU
af40: 4d 45 52 49 43 22 2c 20 44 62 54 79 70 65 2e 44  MERIC", DbType.D
af50: 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d  ecimal, false),.
af60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
af70: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
af80: 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22 2c  ping("NVARCHAR",
af90: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
afa0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
afb0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
afc0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c 45  TypeMapping("OLE
afd0: 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65 2e  OBJECT", DbType.
afe0: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
aff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
b000: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
b010: 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54 79  ping("RAW", DbTy
b020: 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65  pe.Binary, false
b030: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
b040: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
b050: 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c 20  Mapping("REAL", 
b060: 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 74  DbType.Double, t
b070: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
b080: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
b090: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e 47  ypeMapping("SING
b0a0: 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e 67  LE", DbType.Sing
b0b0: 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  le, true),..    
b0c0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
b0d0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
b0e0: 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62 54  "SMALLDATE", DbT
b0f0: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61  ype.DateTime, fa
b100: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
b110: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
b120: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c  ypeMapping("SMAL
b130: 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e  LINT", DbType.In
b140: 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  t16, true),..   
b150: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
b160: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
b170: 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44 62  ("SMALLUINT", Db
b180: 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72 75  Type.UInt16, tru
b190: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
b1a0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
b1b0: 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e 47  eMapping("STRING
b1c0: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
b1d0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
b1e0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
b1f0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
b200: 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74  TEXT", DbType.St
b210: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
b220: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
b230: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
b240: 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79 70  ng("TIME", DbTyp
b250: 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c 73  e.DateTime, fals
b260: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
b270: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
b280: 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53 54  eMapping("TIMEST
b290: 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61 74  AMP", DbType.Dat
b2a0: 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  eTime, false),..
b2b0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
b2c0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
b2d0: 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20 44  ing("TINYINT", D
b2e0: 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75 65  bType.Byte, true
b2f0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
b300: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
b310: 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49 4e  Mapping("TINYSIN
b320: 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 65  T", DbType.SByte
b330: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
b340: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
b350: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55  DbTypeMapping("U
b360: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  INT", DbType.UIn
b370: 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  t32, true),..   
b380: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
b390: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
b3a0: 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70 65  ("UINT8", DbType
b3b0: 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  .Byte, false),..
b3c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
b3d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
b3e0: 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44 62  ing("UINT16", Db
b3f0: 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61 6c  Type.UInt16, fal
b400: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
b410: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
b420: 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 33  peMapping("UINT3
b430: 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33  2", DbType.UInt3
b440: 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  2, false),..    
b450: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
b460: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
b470: 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65  "UINT64", DbType
b480: 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
b490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
b4a0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
b4b0: 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20 44  pping("ULONG", D
b4c0: 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 61  bType.UInt64, fa
b4d0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
b4e0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
b4f0: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49 51  ypeMapping("UNIQ
b500: 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20 44  UEIDENTIFIER", D
b510: 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75 65  bType.Guid, true
b520: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
b530: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
b540: 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45  Mapping("UNSIGNE
b550: 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70  DINTEGER", DbTyp
b560: 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29 2c  e.UInt64, true),
b570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
b580: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
b590: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
b5a0: 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70 65  NTEGER8", DbType
b5b0: 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  .Byte, false),..
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
b5d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
b5e0: 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54  ing("UNSIGNEDINT
b5f0: 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e  EGER16", DbType.
b600: 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d  UInt16, false),.
b610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
b620: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
b630: 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
b640: 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70 65  TEGER32", DbType
b650: 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29 2c  .UInt32, false),
b660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
b670: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
b680: 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
b690: 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79 70  NTEGER64", DbTyp
b6a0: 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
b6b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
b6c0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
b6d0: 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41 52  apping("VARBINAR
b6e0: 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  Y", DbType.Binar
b6f0: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
b700: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
b710: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
b720: 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70  "VARCHAR", DbTyp
b730: 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74 72  e.AnsiString, tr
b740: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
b750: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
b760: 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48  peMapping("VARCH
b770: 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e 73  AR2", DbType.Ans
b780: 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  iString, false),
b790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
b7a0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
b7b0: 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20 44  pping("YESNO", D
b7c0: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66  bType.Boolean, f
b7d0: 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20 7d  alse)..        }
b7e0: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
b7f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b800: 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69      /// For a gi
b810: 76 65 6e 20 74 79 70 65 20 6e 61 6d 65 2c 20 72  ven type name, r
b820: 65 74 75 72 6e 20 61 20 63 6c 6f 73 65 73 74 2d  eturn a closest-
b830: 6d 61 74 63 68 20 2e 4e 45 54 20 74 79 70 65 0d  match .NET type.
b840: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
b850: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
b860: 72 61 6d 20 6e 61 6d 65 3d 22 4e 61 6d 65 22 3e  ram name="Name">
b870: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  The name of the 
b880: 74 79 70 65 20 74 6f 20 6d 61 74 63 68 3c 2f 70  type to match</p
b890: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
b8a0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67  param name="flag
b8b0: 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61 73 73  s">The flags ass
b8c0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
b8d0: 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69   parent connecti
b8e0: 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61  on object.</para
b8f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
b900: 75 72 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42  urns>The .NET DB
b910: 54 79 70 65 20 74 68 65 20 74 65 78 74 20 65 76  Type the text ev
b920: 61 6c 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74  aluates to.</ret
b930: 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72  urns>..    inter
b940: 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70  nal static DbTyp
b950: 65 20 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79  e TypeNameToDbTy
b960: 70 65 28 73 74 72 69 6e 67 20 4e 61 6d 65 2c 20  pe(string Name, 
b970: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
b980: 46 6c 61 67 73 20 66 6c 61 67 73 29 0d 0a 20 20  Flags flags)..  
b990: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c 6f 63    {..        loc
b9a0: 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29 0d 0a 20  k (_syncRoot).. 
b9b0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
b9c0: 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e        if (_typeN
b9d0: 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ames == null).. 
b9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
b9f0: 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65 74 53  typeNames = GetS
ba00: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 29  QLiteDbTypeMap()
ba10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ba20: 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
ba30: 6c 6c 4f 72 45 6d 70 74 79 28 4e 61 6d 65 29 29  llOrEmpty(Name))
ba40: 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e 4f   return DbType.O
ba50: 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20 20 20 20  bject;....      
ba60: 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79        SQLiteDbTy
ba70: 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b  peMapping value;
ba80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ba90: 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54  if (_typeNames.T
baa0: 72 79 47 65 74 56 61 6c 75 65 28 4e 61 6d 65 2c  ryGetValue(Name,
bab0: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
bac0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
bae0: 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79  urn value.dataTy
baf0: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
bb00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
bb10: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
bb20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bb30: 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d       int index =
bb40: 20 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28   Name.IndexOf('(
bb50: 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ');....         
bb60: 20 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65         if ((inde
bb70: 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20  x > 0) &&..     
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f                 _
bb90: 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  typeNames.TryGet
bba0: 56 61 6c 75 65 28 4e 61 6d 65 2e 53 75 62 73 74  Value(Name.Subst
bbb0: 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54  ring(0, index).T
bbc0: 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61  rimEnd(), out va
bbd0: 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  lue))..         
bbe0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
bbf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bc00: 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54  turn value.dataT
bc10: 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ype;..          
bc20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
bc30: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
bc40: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 44 62 54  }....        DbT
bc50: 79 70 65 20 64 65 66 61 75 6c 74 44 62 54 79 70  ype defaultDbTyp
bc60: 65 20 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63  e = DbType.Objec
bc70: 74 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43  t;....#if !NET_C
bc80: 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 52 41  OMPACT_20 && TRA
bc90: 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20  CE_WARNING..    
bca0: 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 20 26      if ((flags &
bcb0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
bcc0: 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e  nFlags.TraceWarn
bcd0: 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  ing) == SQLiteCo
bce0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72  nnectionFlags.Tr
bcf0: 61 63 65 57 61 72 6e 69 6e 67 29 0d 0a 20 20 20  aceWarning)..   
bd00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
bd10: 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c      Trace.WriteL
bd20: 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ine(String.Forma
bd30: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
bd40: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
bd50: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
bd60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd70: 20 22 57 41 52 4e 49 4e 47 3a 20 54 79 70 65 20   "WARNING: Type 
bd80: 6d 61 70 70 69 6e 67 20 66 61 69 6c 65 64 2c 20  mapping failed, 
bd90: 72 65 74 75 72 6e 69 6e 67 20 64 65 66 61 75 6c  returning defaul
bda0: 74 20 74 79 70 65 20 7b 30 7d 20 66 6f 72 20 6e  t type {0} for n
bdb0: 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22 2c 0d 0a  ame \"{1}\".",..
bdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bdd0: 64 65 66 61 75 6c 74 44 62 54 79 70 65 2c 20 4e  defaultDbType, N
bde0: 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ame));..        
bdf0: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20  }..#endif....   
be00: 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61       return defa
be10: 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
be20: 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f  }..    #endregio
be30: 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65  n....    private
be40: 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 5f   static object _
be50: 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65 77 20 6f  syncRoot = new o
be60: 62 6a 65 63 74 28 29 3b 0d 0a 20 20 20 20 70 72  bject();..    pr
be70: 69 76 61 74 65 20 73 74 61 74 69 63 20 53 51 4c  ivate static SQL
be80: 69 74 65 44 62 54 79 70 65 4d 61 70 20 5f 74 79  iteDbTypeMap _ty
be90: 70 65 4e 61 6d 65 73 20 3d 20 6e 75 6c 6c 3b 0d  peNames = null;.
bea0: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
beb0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53  ummary>..  /// S
bec0: 51 4c 69 74 65 20 68 61 73 20 76 65 72 79 20 6c  QLite has very l
bed0: 69 6d 69 74 65 64 20 74 79 70 65 73 2c 20 61 6e  imited types, an
bee0: 64 20 69 73 20 69 6e 68 65 72 65 6e 74 6c 79 20  d is inherently 
bef0: 74 65 78 74 2d 62 61 73 65 64 2e 20 20 54 68 65  text-based.  The
bf00: 20 66 69 72 73 74 20 35 20 74 79 70 65 73 20 62   first 5 types b
bf10: 65 6c 6f 77 20 72 65 70 72 65 73 65 6e 74 20 74  elow represent t
bf20: 68 65 20 73 75 6d 20 6f 66 20 61 6c 6c 20 74 79  he sum of all ty
bf30: 70 65 73 20 53 51 4c 69 74 65 0d 0a 20 20 2f 2f  pes SQLite..  //
bf40: 2f 20 75 6e 64 65 72 73 74 61 6e 64 73 2e 20 20  / understands.  
bf50: 54 68 65 20 44 61 74 65 54 69 6d 65 20 65 78 74  The DateTime ext
bf60: 65 6e 73 69 6f 6e 20 74 6f 20 74 68 65 20 73 70  ension to the sp
bf70: 65 63 20 69 73 20 66 6f 72 20 69 6e 74 65 72 6e  ec is for intern
bf80: 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20  al use only...  
bf90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
bfa0: 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 79    public enum Ty
bfb0: 70 65 41 66 66 69 6e 69 74 79 0d 0a 20 20 7b 0d  peAffinity..  {.
bfc0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
bfd0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 20  y>..    /// Not 
bfe0: 75 73 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  used..    /// </
bff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e  summary>..    Un
c000: 69 6e 69 74 69 61 6c 69 7a 65 64 20 3d 20 30 2c  initialized = 0,
c010: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
c020: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6c 6c  ry>..    /// All
c030: 20 69 6e 74 65 67 65 72 73 20 69 6e 20 53 51 4c   integers in SQL
c040: 69 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 49  ite default to I
c050: 6e 74 36 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  nt64..    /// </
c060: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e  summary>..    In
c070: 74 36 34 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  t64 = 1,..    //
c080: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c090: 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f 61 74 69 6e   /// All floatin
c0a0: 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20  g point numbers 
c0b0: 69 6e 20 53 51 4c 69 74 65 20 64 65 66 61 75 6c  in SQLite defaul
c0c0: 74 20 74 6f 20 64 6f 75 62 6c 65 0d 0a 20 20 20  t to double..   
c0d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c0e0: 0a 20 20 20 20 44 6f 75 62 6c 65 20 3d 20 32 2c  .    Double = 2,
c0f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
c100: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
c110: 20 64 65 66 61 75 6c 74 20 64 61 74 61 20 74 79   default data ty
c120: 70 65 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20  pe of SQLite is 
c130: 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  text..    /// </
c140: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 65  summary>..    Te
c150: 78 74 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f  xt = 3,..    ///
c160: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c170: 2f 2f 2f 20 54 79 70 69 63 61 6c 6c 79 20 62 6c  /// Typically bl
c180: 6f 62 20 74 79 70 65 73 20 61 72 65 20 6f 6e 6c  ob types are onl
c190: 79 20 73 65 65 6e 20 77 68 65 6e 20 72 65 74 75  y seen when retu
c1a0: 72 6e 65 64 20 66 72 6f 6d 20 61 20 66 75 6e 63  rned from a func
c1b0: 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tion..    /// </
c1c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 42 6c  summary>..    Bl
c1d0: 6f 62 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f  ob = 4,..    ///
c1e0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c1f0: 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70 65 73 20 63  /// Null types c
c200: 61 6e 20 62 65 20 72 65 74 75 72 6e 65 64 20 66  an be returned f
c210: 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 20  rom functions.. 
c220: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c230: 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20 3d 20 35 2c  >..    Null = 5,
c240: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
c250: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65  ry>..    /// Use
c260: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20  d internally by 
c270: 74 68 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20  this provider.. 
c280: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
c290: 3e 0d 0a 20 20 20 20 44 61 74 65 54 69 6d 65 20  >..    DateTime 
c2a0: 3d 20 31 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c  = 10,..    /// <
c2b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
c2c0: 2f 20 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c  / Used internall
c2d0: 79 20 62 79 20 74 68 69 73 20 70 72 6f 76 69 64  y by this provid
c2e0: 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  er..    /// </su
c2f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e 6f 6e 65  mmary>..    None
c300: 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20   = 11,..  }.... 
c310: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
c320: 20 20 2f 2f 2f 20 54 68 65 73 65 20 61 72 65 20    /// These are 
c330: 74 68 65 20 65 76 65 6e 74 20 74 79 70 65 73 20  the event types 
c340: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
c350: 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20  the..  /// <see 
c360: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e  cref="SQLiteConn
c370: 65 63 74 69 6f 6e 45 76 65 6e 74 48 61 6e 64 6c  ectionEventHandl
c380: 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f 2f 20 64 65  er" />..  /// de
c390: 6c 65 67 61 74 65 20 28 61 6e 64 20 69 74 73 20  legate (and its 
c3a0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 65 76  corresponding ev
c3b0: 65 6e 74 29 20 61 6e 64 20 74 68 65 0d 0a 20 20  ent) and the..  
c3c0: 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 43  /// <see cref="C
c3d0: 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 41 72  onnectionEventAr
c3e0: 67 73 22 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20  gs" /> class... 
c3f0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
c400: 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53  .  public enum S
c410: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 45  QLiteConnectionE
c420: 76 65 6e 74 54 79 70 65 0d 0a 20 20 7b 0d 0a 20  ventType..  {.. 
c430: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c440: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f  y>..      /// No
c450: 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f  t used...      /
c460: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c470: 20 20 20 20 20 49 6e 76 61 6c 69 64 20 3d 20 2d       Invalid = -
c480: 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
c490: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
c4a0: 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 2e 0d 0a   /// Not used...
c4b0: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
c4c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 55 6e 6b 6e  ary>..      Unkn
c4d0: 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20  own = 0,....    
c4e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
c4f0: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
c500: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69  onnection is bei
c510: 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20  ng opened...    
c520: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c530: 0d 0a 20 20 20 20 20 20 4f 70 65 6e 69 6e 67 20  ..      Opening 
c540: 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
c550: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c560: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65     /// The conne
c570: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 68 61 73  ction string has
c580: 20 62 65 65 6e 20 70 61 72 73 65 64 2e 0d 0a 20   been parsed... 
c590: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c5a0: 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f 6e 6e 65  ry>..      Conne
c5b0: 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d 20 32 2c  ctionString = 2,
c5c0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
c5d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
c5e0: 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f  // The connectio
c5f0: 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20  n was opened... 
c600: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c610: 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65  ry>..      Opene
c620: 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20  d = 3,....      
c630: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
c640: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65       /// The <se
c650: 65 20 63 72 65 66 3d 22 43 68 61 6e 67 65 44 61  e cref="ChangeDa
c660: 74 61 62 61 73 65 22 20 2f 3e 20 6d 65 74 68 6f  tabase" /> metho
c670: 64 20 77 61 73 20 63 61 6c 6c 65 64 20 6f 6e 20  d was called on 
c680: 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  the..      /// c
c690: 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20  onnection...    
c6a0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
c6b0: 0d 0a 20 20 20 20 20 20 43 68 61 6e 67 65 44 61  ..      ChangeDa
c6c0: 74 61 62 61 73 65 20 3d 20 34 2c 0d 0a 0d 0a 20  tabase = 4,.... 
c6d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c6e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
c6f0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 61 73 20  transaction was 
c700: 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68  created using th
c710: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
c720: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c730: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 54 72  ry>..      NewTr
c740: 61 6e 73 61 63 74 69 6f 6e 20 3d 20 35 2c 0d 0a  ansaction = 5,..
c750: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
c760: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
c770: 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
c780: 77 61 73 20 65 6e 6c 69 73 74 65 64 20 69 6e 74  was enlisted int
c790: 6f 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e  o a transaction.
c7a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
c7b0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 45 6e  mmary>..      En
c7c0: 6c 69 73 74 54 72 61 6e 73 61 63 74 69 6f 6e 20  listTransaction 
c7d0: 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 6,....      //
c7e0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
c7f0: 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64     /// A command
c800: 20 77 61 73 20 63 72 65 61 74 65 64 20 75 73 69   was created usi
c810: 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ng the connectio
c820: 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  n...      /// </
c830: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c840: 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d 20 37 2c 0d  NewCommand = 7,.
c850: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
c860: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
c870: 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72 20  / A data reader 
c880: 77 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e  was created usin
c890: 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  g the connection
c8a0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
c8b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
c8c0: 65 77 44 61 74 61 52 65 61 64 65 72 20 3d 20 38  ewDataReader = 8
c8d0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
c8e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
c8f0: 2f 2f 2f 20 41 6e 20 69 6e 73 74 61 6e 63 65 20  /// An instance 
c900: 6f 66 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22  of a <see cref="
c910: 43 72 69 74 69 63 61 6c 48 61 6e 64 6c 65 22 20  CriticalHandle" 
c920: 2f 3e 20 64 65 72 69 76 65 64 20 63 6c 61 73 73  /> derived class
c930: 20 68 61 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   has..      /// 
c940: 62 65 65 6e 20 63 72 65 61 74 65 64 20 74 6f 20  been created to 
c950: 77 72 61 70 20 61 20 6e 61 74 69 76 65 20 72 65  wrap a native re
c960: 73 6f 75 72 63 65 2e 0d 0a 20 20 20 20 20 20 2f  source...      /
c970: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
c980: 20 20 20 20 20 4e 65 77 43 72 69 74 69 63 61 6c       NewCritical
c990: 48 61 6e 64 6c 65 20 3d 20 39 2c 0d 0a 0d 0a 20  Handle = 9,.... 
c9a0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
c9b0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
c9c0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
c9d0: 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20  being closed... 
c9e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
c9f0: 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69  ry>..      Closi
ca00: 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20  ng = 10,....    
ca10: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ca20: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
ca30: 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 63 6c  onnection was cl
ca40: 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  osed...      ///
ca50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
ca60: 20 20 20 43 6c 6f 73 65 64 20 3d 20 31 31 0d 0a     Closed = 11..
ca70: 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75    }....  /// <su
ca80: 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68  mmary>..  /// Th
ca90: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  is implementatio
caa0: 6e 20 6f 66 20 53 51 4c 69 74 65 20 66 6f 72 20  n of SQLite for 
cab0: 41 44 4f 2e 4e 45 54 20 63 61 6e 20 70 72 6f 63  ADO.NET can proc
cac0: 65 73 73 20 64 61 74 65 2f 74 69 6d 65 20 66 69  ess date/time fi
cad0: 65 6c 64 73 20 69 6e 0d 0a 20 20 2f 2f 2f 20 64  elds in..  /// d
cae0: 61 74 61 62 61 73 65 73 20 69 6e 20 6f 6e 65 20  atabases in one 
caf0: 6f 66 20 73 69 78 20 66 6f 72 6d 61 74 73 2e 0d  of six formats..
cb00: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
cb10: 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b  >..  /// <remark
cb20: 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f 38 36 30  s>..  /// ISO860
cb30: 31 20 66 6f 72 6d 61 74 20 69 73 20 6d 6f 72 65  1 format is more
cb40: 20 63 6f 6d 70 61 74 69 62 6c 65 2c 20 72 65 61   compatible, rea
cb50: 64 61 62 6c 65 2c 20 66 75 6c 6c 79 2d 70 72 6f  dable, fully-pro
cb60: 63 65 73 73 61 62 6c 65 2c 20 62 75 74 20 6c 65  cessable, but le
cb70: 73 73 0d 0a 20 20 2f 2f 2f 20 61 63 63 75 72 61  ss..  /// accura
cb80: 74 65 20 61 73 20 69 74 20 64 6f 65 73 20 6e 6f  te as it does no
cb90: 74 20 70 72 6f 76 69 64 65 20 74 69 6d 65 20 64  t provide time d
cba0: 6f 77 6e 20 74 6f 20 66 72 61 63 74 69 6f 6e 73  own to fractions
cbb0: 20 6f 66 20 61 20 73 65 63 6f 6e 64 2e 0d 0a 20   of a second... 
cbc0: 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 61 79 20 69   /// JulianDay i
cbd0: 73 20 74 68 65 20 6e 75 6d 65 72 69 63 20 66 6f  s the numeric fo
cbe0: 72 6d 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  rmat the SQLite 
cbf0: 75 73 65 73 20 69 6e 74 65 72 6e 61 6c 6c 79 20  uses internally 
cc00: 61 6e 64 20 69 73 20 61 72 67 75 61 62 6c 79 0d  and is arguably.
cc10: 0a 20 20 2f 2f 2f 20 74 68 65 20 6d 6f 73 74 20  .  /// the most 
cc20: 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20  compatible with 
cc30: 33 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73 2e  3rd party tools.
cc40: 20 20 49 74 20 69 73 20 6e 6f 74 20 72 65 61 64    It is not read
cc50: 61 62 6c 65 20 61 73 20 74 65 78 74 0d 0a 20 20  able as text..  
cc60: 2f 2f 2f 20 77 69 74 68 6f 75 74 20 70 6f 73 74  /// without post
cc70: 2d 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 54 69  -processing.  Ti
cc80: 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70 61 74 69  cks less compati
cc90: 62 6c 65 20 77 69 74 68 20 33 72 64 20 70 61 72  ble with 3rd par
cca0: 74 79 20 74 6f 6f 6c 73 20 74 68 61 74 0d 0a 20  ty tools that.. 
ccb0: 20 2f 2f 2f 20 71 75 65 72 79 20 74 68 65 20 64   /// query the d
ccc0: 61 74 61 62 61 73 65 2c 20 61 6e 64 20 72 65 6e  atabase, and ren
ccd0: 64 65 72 73 20 74 68 65 20 44 61 74 65 54 69 6d  ders the DateTim
cce0: 65 20 66 69 65 6c 64 20 75 6e 72 65 61 64 61 62  e field unreadab
ccf0: 6c 65 20 61 73 20 74 65 78 74 0d 0a 20 20 2f 2f  le as text..  //
cd00: 2f 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70  / without post-p
cd10: 72 6f 63 65 73 73 69 6e 67 2e 20 20 55 6e 69 78  rocessing.  Unix
cd20: 45 70 6f 63 68 20 69 73 20 6d 6f 72 65 20 63 6f  Epoch is more co
cd30: 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 55 6e  mpatible with Un
cd40: 69 78 20 73 79 73 74 65 6d 73 2e 0d 0a 20 20 2f  ix systems...  /
cd50: 2f 2f 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  // InvariantCult
cd60: 75 72 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 63  ure allows the c
cd70: 6f 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74  onfigured format
cd80: 20 66 6f 72 20 74 68 65 20 69 6e 76 61 72 69 61   for the invaria
cd90: 6e 74 20 63 75 6c 74 75 72 65 0d 0a 20 20 2f 2f  nt culture..  //
cda0: 2f 20 66 6f 72 6d 61 74 20 74 6f 20 62 65 20 75  / format to be u
cdb0: 73 65 64 20 61 6e 64 20 69 73 20 68 75 6d 61 6e  sed and is human
cdc0: 20 72 65 61 64 61 62 6c 65 2e 20 20 43 75 72 72   readable.  Curr
cdd0: 65 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77  entCulture allow
cde0: 73 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 63 6f 6e  s the..  /// con
cdf0: 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74 20 66  figured format f
ce00: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
ce10: 75 6c 74 75 72 65 20 74 6f 20 62 65 20 75 73 65  ulture to be use
ce20: 64 20 61 6e 64 20 69 73 20 61 6c 73 6f 20 68 75  d and is also hu
ce30: 6d 61 6e 0d 0a 20 20 2f 2f 2f 20 72 65 61 64 61  man..  /// reada
ce40: 62 6c 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f  ble...  ///..  /
ce50: 2f 2f 20 54 68 65 20 70 72 65 66 65 72 72 65 64  // The preferred
ce60: 20 6f 72 64 65 72 20 6f 66 20 63 68 6f 6f 73 69   order of choosi
ce70: 6e 67 20 61 20 44 61 74 65 54 69 6d 65 20 66 6f  ng a DateTime fo
ce80: 72 6d 61 74 20 69 73 20 4a 75 6c 69 61 6e 44 61  rmat is JulianDa
ce90: 79 2c 20 49 53 4f 38 36 30 31 2c 0d 0a 20 20 2f  y, ISO8601,..  /
cea0: 2f 2f 20 61 6e 64 20 74 68 65 6e 20 54 69 63 6b  // and then Tick
ceb0: 73 2e 20 20 54 69 63 6b 73 20 69 73 20 6d 61 69  s.  Ticks is mai
cec0: 6e 6c 79 20 70 72 65 73 65 6e 74 20 66 6f 72 20  nly present for 
ced0: 6c 65 67 61 63 79 20 63 6f 64 65 20 73 75 70 70  legacy code supp
cee0: 6f 72 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65  ort...  /// </re
cef0: 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63  marks>..  public
cf00: 20 65 6e 75 6d 20 53 51 4c 69 74 65 44 61 74 65   enum SQLiteDate
cf10: 46 6f 72 6d 61 74 73 0d 0a 20 20 7b 0d 0a 20 20  Formats..  {..  
cf20: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
cf30: 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65  .    /// Use the
cf40: 20 76 61 6c 75 65 20 6f 66 20 44 61 74 65 54 69   value of DateTi
cf50: 6d 65 2e 54 69 63 6b 73 2e 20 20 54 68 69 73 20  me.Ticks.  This 
cf60: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 72 65 63  value is not rec
cf70: 6f 6d 6d 65 6e 64 65 64 20 61 6e 64 20 69 73 20  ommended and is 
cf80: 6e 6f 74 20 77 65 6c 6c 20 73 75 70 70 6f 72 74  not well support
cf90: 65 64 20 77 69 74 68 20 4c 49 4e 51 2e 0d 0a 20  ed with LINQ... 
cfa0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
cfb0: 3e 0d 0a 20 20 20 20 54 69 63 6b 73 20 3d 20 30  >..    Ticks = 0
cfc0: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
cfd0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73  ary>..    /// Us
cfe0: 65 20 74 68 65 20 49 53 4f 2d 38 36 30 31 20 66  e the ISO-8601 f
cff0: 6f 72 6d 61 74 2e 20 20 55 73 65 73 20 74 68 65  ormat.  Uses the
d000: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a   "yyyy-MM-dd HH:
d010: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 22 20  mm:ss.FFFFFFFK" 
d020: 66 6f 72 6d 61 74 20 66 6f 72 20 55 54 43 20 44  format for UTC D
d030: 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73 20 61  ateTime values a
d040: 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 79 79  nd..    /// "yyy
d050: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
d060: 2e 46 46 46 46 46 46 46 22 20 66 6f 72 6d 61 74  .FFFFFFF" format
d070: 20 66 6f 72 20 6c 6f 63 61 6c 20 44 61 74 65 54   for local DateT
d080: 69 6d 65 20 76 61 6c 75 65 73 29 2e 0d 0a 20 20  ime values)...  
d090: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d0a0: 0d 0a 20 20 20 20 49 53 4f 38 36 30 31 20 3d 20  ..    ISO8601 = 
d0b0: 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  1,..    /// <sum
d0c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
d0d0: 68 65 20 69 6e 74 65 72 76 61 6c 20 6f 66 20 74  he interval of t
d0e0: 69 6d 65 20 69 6e 20 64 61 79 73 20 61 6e 64 20  ime in days and 
d0f0: 66 72 61 63 74 69 6f 6e 73 20 6f 66 20 61 20 64  fractions of a d
d100: 61 79 20 73 69 6e 63 65 20 4a 61 6e 75 61 72 79  ay since January
d110: 20 31 2c 20 34 37 31 33 20 42 43 2e 0d 0a 20 20   1, 4713 BC...  
d120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
d130: 0d 0a 20 20 20 20 4a 75 6c 69 61 6e 44 61 79 20  ..    JulianDay 
d140: 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 2,..    /// <s
d150: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d160: 20 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65   The whole numbe
d170: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
d180: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63  ce the Unix epoc
d190: 68 20 28 4a 61 6e 75 61 72 79 20 31 2c 20 31 39  h (January 1, 19
d1a0: 37 30 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  70)...    /// </
d1b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 55 6e  summary>..    Un
d1c0: 69 78 45 70 6f 63 68 20 3d 20 33 2c 0d 0a 20 20  ixEpoch = 3,..  
d1d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d1e0: 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 63 75 6c  .    /// Any cul
d1f0: 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74  ture-independent
d200: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74 68   string value th
d210: 61 74 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d  at the .NET Fram
d220: 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72 70  ework can interp
d230: 72 65 74 20 61 73 20 61 20 76 61 6c 69 64 20 44  ret as a valid D
d240: 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  ateTime...    //
d250: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d260: 20 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75    InvariantCultu
d270: 72 65 20 3d 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f  re = 4,..    ///
d280: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
d290: 2f 2f 2f 20 41 6e 79 20 73 74 72 69 6e 67 20 76  /// Any string v
d2a0: 61 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e  alue that the .N
d2b0: 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e  ET Framework can
d2c0: 20 69 6e 74 65 72 70 72 65 74 20 61 73 20 61 20   interpret as a 
d2d0: 76 61 6c 69 64 20 44 61 74 65 54 69 6d 65 20 75  valid DateTime u
d2e0: 73 69 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74  sing the current
d2f0: 20 63 75 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f   culture...    /
d300: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d310: 20 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72     CurrentCultur
d320: 65 20 3d 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20  e = 5,..    /// 
d330: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
d340: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 66  // The default f
d350: 6f 72 6d 61 74 20 66 6f 72 20 74 68 69 73 20 70  ormat for this p
d360: 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f  rovider...    //
d370: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
d380: 20 20 44 65 66 61 75 6c 74 20 3d 20 49 53 4f 38    Default = ISO8
d390: 36 30 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  601..  }....  //
d3a0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
d3b0: 2f 2f 20 54 68 69 73 20 65 6e 75 6d 20 64 65 74  // This enum det
d3c0: 65 72 6d 69 6e 65 73 20 68 6f 77 20 53 51 4c 69  ermines how SQLi
d3d0: 74 65 20 74 72 65 61 74 73 20 69 74 73 20 6a 6f  te treats its jo
d3e0: 75 72 6e 61 6c 20 66 69 6c 65 2e 0d 0a 20 20 2f  urnal file...  /
d3f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d400: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
d410: 20 20 2f 2f 2f 20 42 79 20 64 65 66 61 75 6c 74    /// By default
d420: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65   SQLite will cre
d430: 61 74 65 20 61 6e 64 20 64 65 6c 65 74 65 20 74  ate and delete t
d440: 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  he journal file 
d450: 77 68 65 6e 20 6e 65 65 64 65 64 20 64 75 72 69  when needed duri
d460: 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ng a transaction
d470: 2e 0d 0a 20 20 2f 2f 2f 20 48 6f 77 65 76 65 72  ...  /// However
d480: 2c 20 66 6f 72 20 73 6f 6d 65 20 63 6f 6d 70 75  , for some compu
d490: 74 65 72 73 20 72 75 6e 6e 69 6e 67 20 63 65 72  ters running cer
d4a0: 74 61 69 6e 20 66 69 6c 65 73 79 73 74 65 6d 20  tain filesystem 
d4b0: 6d 6f 6e 69 74 6f 72 69 6e 67 20 74 6f 6f 6c 73  monitoring tools
d4c0: 2c 20 74 68 65 20 72 61 70 69 64 0d 0a 20 20 2f  , the rapid..  /
d4d0: 2f 2f 20 63 72 65 61 74 69 6f 6e 20 61 6e 64 20  // creation and 
d4e0: 64 65 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20  deletion of the 
d4f0: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 63 61 6e  journal file can
d500: 20 63 61 75 73 65 20 74 68 6f 73 65 20 70 72 6f   cause those pro
d510: 67 72 61 6d 73 20 74 6f 20 66 61 69 6c 2c 20 6f  grams to fail, o
d520: 72 20 74 6f 20 69 6e 74 65 72 66 65 72 65 20 77  r to interfere w
d530: 69 74 68 20 53 51 4c 69 74 65 2e 0d 0a 20 20 2f  ith SQLite...  /
d540: 2f 2f 0d 0a 20 20 2f 2f 2f 20 49 66 20 61 20 70  //..  /// If a p
d550: 72 6f 67 72 61 6d 20 6f 72 20 76 69 72 75 73 20  rogram or virus 
d560: 73 63 61 6e 6e 65 72 20 69 73 20 69 6e 74 65 72  scanner is inter
d570: 66 65 72 69 6e 67 20 77 69 74 68 20 53 51 4c 69  fering with SQLi
d580: 74 65 27 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c  te's journal fil
d590: 65 2c 20 79 6f 75 20 6d 61 79 20 72 65 63 65 69  e, you may recei
d5a0: 76 65 20 65 72 72 6f 72 73 20 6c 69 6b 65 20 22  ve errors like "
d5b0: 75 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 64  unable to open d
d5c0: 61 74 61 62 61 73 65 20 66 69 6c 65 22 0d 0a 20  atabase file".. 
d5d0: 20 2f 2f 2f 20 77 68 65 6e 20 73 74 61 72 74 69   /// when starti
d5e0: 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ng a transaction
d5f0: 2e 20 20 49 66 20 74 68 69 73 20 69 73 20 68 61  .  If this is ha
d600: 70 70 65 6e 69 6e 67 2c 20 79 6f 75 20 6d 61 79  ppening, you may
d610: 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20   want to change 
d620: 74 68 65 20 64 65 66 61 75 6c 74 20 6a 6f 75 72  the default jour
d630: 6e 61 6c 20 6d 6f 64 65 20 74 6f 20 50 65 72 73  nal mode to Pers
d640: 69 73 74 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 72 65  ist...  /// </re
d650: 6d 61 72 6b 73 3e 0d 0a 20 20 70 75 62 6c 69 63  marks>..  public
d660: 20 65 6e 75 6d 20 53 51 4c 69 74 65 4a 6f 75 72   enum SQLiteJour
d670: 6e 61 6c 4d 6f 64 65 45 6e 75 6d 0d 0a 20 20 7b  nalModeEnum..  {
d680: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
d690: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
d6a0: 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2c 20 74   default mode, t
d6b0: 68 69 73 20 63 61 75 73 65 73 20 53 51 4c 69 74  his causes SQLit
d6c0: 65 20 74 6f 20 75 73 65 20 74 68 65 20 65 78 69  e to use the exi
d6d0: 73 74 69 6e 67 20 6a 6f 75 72 6e 61 6c 69 6e 67  sting journaling
d6e0: 20 6d 6f 64 65 20 66 6f 72 20 74 68 65 20 64 61   mode for the da
d6f0: 74 61 62 61 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  tabase...    ///
d700: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d710: 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a   Default = -1,..
d720: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
d730: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  >..    /// SQLit
d740: 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20 61 6e  e will create an
d750: 64 20 64 65 73 74 72 6f 79 20 74 68 65 20 6a 6f  d destroy the jo
d760: 75 72 6e 61 6c 20 66 69 6c 65 20 61 73 2d 6e 65  urnal file as-ne
d770: 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eded...    /// <
d780: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44  /summary>..    D
d790: 65 6c 65 74 65 20 3d 20 30 2c 0d 0a 20 20 20 20  elete = 0,..    
d7a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
d7b0: 20 20 20 2f 2f 2f 20 57 68 65 6e 20 74 68 69 73     /// When this
d7c0: 20 69 73 20 73 65 74 2c 20 53 51 4c 69 74 65 20   is set, SQLite 
d7d0: 77 69 6c 6c 20 6b 65 65 70 20 74 68 65 20 6a 6f  will keep the jo
d7e0: 75 72 6e 61 6c 20 66 69 6c 65 20 65 76 65 6e 20  urnal file even 
d7f0: 61 66 74 65 72 20 61 20 74 72 61 6e 73 61 63 74  after a transact
d800: 69 6f 6e 20 68 61 73 20 63 6f 6d 70 6c 65 74 65  ion has complete
d810: 64 2e 20 20 49 74 27 73 20 63 6f 6e 74 65 6e 74  d.  It's content
d820: 73 20 77 69 6c 6c 20 62 65 20 65 72 61 73 65 64  s will be erased
d830: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 74  ,..    /// and t
d840: 68 65 20 6a 6f 75 72 6e 61 6c 20 72 65 2d 75 73  he journal re-us
d850: 65 64 20 61 73 20 6f 66 74 65 6e 20 61 73 20 6e  ed as often as n
d860: 65 65 64 65 64 2e 20 20 49 66 20 69 74 20 69 73  eeded.  If it is
d870: 20 64 65 6c 65 74 65 64 2c 20 69 74 20 77 69 6c   deleted, it wil
d880: 6c 20 62 65 20 72 65 63 72 65 61 74 65 64 20 74  l be recreated t
d890: 68 65 20 6e 65 78 74 20 74 69 6d 65 20 69 74 20  he next time it 
d8a0: 69 73 20 6e 65 65 64 65 64 2e 0d 0a 20 20 20 20  is needed...    
d8b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
d8c0: 20 20 20 20 50 65 72 73 69 73 74 20 3d 20 31 2c      Persist = 1,
d8d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
d8e0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69  ry>..    /// Thi
d8f0: 73 20 6f 70 74 69 6f 6e 20 64 69 73 61 62 6c 65  s option disable
d900: 73 20 74 68 65 20 72 6f 6c 6c 62 61 63 6b 20 6a  s the rollback j
d910: 6f 75 72 6e 61 6c 20 65 6e 74 69 72 65 6c 79 2e  ournal entirely.
d920: 20 20 49 6e 74 65 72 72 75 70 74 65 64 20 74 72    Interrupted tr
d930: 61 6e 73 61 63 74 69 6f 6e 73 20 6f 72 20 61 20  ansactions or a 
d940: 70 72 6f 67 72 61 6d 20 63 72 61 73 68 20 63 61  program crash ca
d950: 6e 20 63 61 75 73 65 20 64 61 74 61 62 61 73 65  n cause database
d960: 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70  ..    /// corrup
d970: 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 6d 6f 64  tion in this mod
d980: 65 21 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e!..    /// </su
d990: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4f 66 66 20  mmary>..    Off 
d9a0: 3d 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 2,..    /// <s
d9b0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
d9c0: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 74 72 75   SQLite will tru
d9d0: 6e 63 61 74 65 20 74 68 65 20 6a 6f 75 72 6e 61  ncate the journa
d9e0: 6c 20 66 69 6c 65 20 74 6f 20 7a 65 72 6f 2d 6c  l file to zero-l
d9f0: 65 6e 67 74 68 20 69 6e 73 74 65 61 64 20 6f 66  ength instead of
da00: 20 64 65 6c 65 74 69 6e 67 20 69 74 2e 0d 0a 20   deleting it... 
da10: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
da20: 3e 0d 0a 20 20 20 20 54 72 75 6e 63 61 74 65 20  >..    Truncate 
da30: 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 3,..    /// <s
da40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
da50: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 74 6f   SQLite will sto
da60: 72 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 69  re the journal i
da70: 6e 20 76 6f 6c 61 74 69 6c 65 20 52 41 4d 2e 20  n volatile RAM. 
da80: 20 54 68 69 73 20 73 61 76 65 73 20 64 69 73 6b   This saves disk
da90: 20 49 2f 4f 20 62 75 74 20 61 74 20 74 68 65 20   I/O but at the 
daa0: 65 78 70 65 6e 73 65 20 6f 66 20 64 61 74 61 62  expense of datab
dab0: 61 73 65 20 73 61 66 65 74 79 20 61 6e 64 20 69  ase safety and i
dac0: 6e 74 65 67 72 69 74 79 2e 0d 0a 20 20 20 20 2f  ntegrity...    /
dad0: 2f 2f 20 49 66 20 74 68 65 20 61 70 70 6c 69 63  // If the applic
dae0: 61 74 69 6f 6e 20 75 73 69 6e 67 20 53 51 4c 69  ation using SQLi
daf0: 74 65 20 63 72 61 73 68 65 73 20 69 6e 20 74 68  te crashes in th
db00: 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72  e middle of a tr
db10: 61 6e 73 61 63 74 69 6f 6e 20 77 68 65 6e 20 74  ansaction when t
db20: 68 65 20 4d 45 4d 4f 52 59 20 6a 6f 75 72 6e 61  he MEMORY journa
db30: 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 73 65 74  ling mode is set
db40: 2c 20 74 68 65 6e 20 74 68 65 0d 0a 20 20 20 20  , then the..    
db50: 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 66 69 6c  /// database fil
db60: 65 20 77 69 6c 6c 20 76 65 72 79 20 6c 69 6b 65  e will very like
db70: 6c 79 20 67 6f 20 63 6f 72 72 75 70 74 2e 0d 0a  ly go corrupt...
db80: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
db90: 79 3e 0d 0a 20 20 20 20 4d 65 6d 6f 72 79 20 3d  y>..    Memory =
dba0: 20 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   4,..    /// <su
dbb0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
dbc0: 53 51 4c 69 74 65 20 75 73 65 73 20 61 20 77 72  SQLite uses a wr
dbd0: 69 74 65 2d 61 68 65 61 64 20 6c 6f 67 20 69 6e  ite-ahead log in
dbe0: 73 74 65 61 64 20 6f 66 20 61 20 72 6f 6c 6c 62  stead of a rollb
dbf0: 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 74 6f 20 69  ack journal to i
dc00: 6d 70 6c 65 6d 65 6e 74 20 74 72 61 6e 73 61 63  mplement transac
dc10: 74 69 6f 6e 73 2e 20 20 54 68 65 20 57 41 4c 20  tions.  The WAL 
dc20: 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
dc30: 69 73 20 70 65 72 73 69 73 74 65 6e 74 3b 0d 0a  is persistent;..
dc40: 20 20 20 20 2f 2f 2f 20 61 66 74 65 72 20 62 65      /// after be
dc50: 69 6e 67 20 73 65 74 20 69 74 20 73 74 61 79 73  ing set it stays
dc60: 20 69 6e 20 65 66 66 65 63 74 20 61 63 72 6f 73   in effect acros
dc70: 73 20 6d 75 6c 74 69 70 6c 65 20 64 61 74 61 62  s multiple datab
dc80: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
dc90: 61 6e 64 20 61 66 74 65 72 20 63 6c 6f 73 69 6e  and after closin
dca0: 67 20 61 6e 64 20 72 65 6f 70 65 6e 69 6e 67 20  g and reopening 
dcb0: 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 41 20  the database. A 
dcc0: 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f  database..    //
dcd0: 2f 20 69 6e 20 57 41 4c 20 6a 6f 75 72 6e 61 6c  / in WAL journal
dce0: 69 6e 67 20 6d 6f 64 65 20 63 61 6e 20 6f 6e 6c  ing mode can onl
dcf0: 79 20 62 65 20 61 63 63 65 73 73 65 64 20 62 79  y be accessed by
dd00: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
dd10: 33 2e 37 2e 30 20 6f 72 20 6c 61 74 65 72 2e 0d  3.7.0 or later..
dd20: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
dd30: 72 79 3e 0d 0a 20 20 20 20 57 61 6c 20 3d 20 35  ry>..    Wal = 5
dd40: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
dd50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
dd60: 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20  Possible values 
dd70: 66 6f 72 20 74 68 65 20 22 73 79 6e 63 68 72 6f  for the "synchro
dd80: 6e 6f 75 73 22 20 64 61 74 61 62 61 73 65 20 73  nous" database s
dd90: 65 74 74 69 6e 67 2e 20 20 54 68 69 73 20 73 65  etting.  This se
dda0: 74 74 69 6e 67 20 64 65 74 65 72 6d 69 6e 65 73  tting determines
ddb0: 0d 0a 20 20 2f 2f 2f 20 68 6f 77 20 6f 66 74 65  ..  /// how ofte
ddc0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65  n the database e
ddd0: 6e 67 69 6e 65 20 63 61 6c 6c 73 20 74 68 65 20  ngine calls the 
dde0: 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20  xSync method of 
ddf0: 74 68 65 20 56 46 53 2e 0d 0a 20 20 2f 2f 2f 20  the VFS...  /// 
de00: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e  </summary>..  in
de10: 74 65 72 6e 61 6c 20 65 6e 75 6d 20 53 51 4c 69  ternal enum SQLi
de20: 74 65 53 79 6e 63 68 72 6f 6e 6f 75 73 45 6e 75  teSynchronousEnu
de30: 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  m..  {..      //
de40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
de50: 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 64     /// Use the d
de60: 65 66 61 75 6c 74 20 22 73 79 6e 63 68 72 6f 6e  efault "synchron
de70: 6f 75 73 22 20 64 61 74 61 62 61 73 65 20 73 65  ous" database se
de80: 74 74 69 6e 67 2e 20 20 43 75 72 72 65 6e 74 6c  tting.  Currentl
de90: 79 2c 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62  y, this should b
dea0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
deb0: 20 73 61 6d 65 20 61 73 20 75 73 69 6e 67 20 74   same as using t
dec0: 68 65 20 46 55 4c 4c 20 6d 6f 64 65 2e 0d 0a 20  he FULL mode... 
ded0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
dee0: 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61 75  ry>..      Defau
def0: 6c 74 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20  lt = -1,....    
df00: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
df10: 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 64  .      /// The d
df20: 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 63  atabase engine c
df30: 6f 6e 74 69 6e 75 65 73 20 77 69 74 68 6f 75 74  ontinues without
df40: 20 73 79 6e 63 69 6e 67 20 61 73 20 73 6f 6f 6e   syncing as soon
df50: 20 61 73 20 69 74 20 68 61 73 20 68 61 6e 64 65   as it has hande
df60: 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  d..      /// dat
df70: 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70 65  a off to the ope
df80: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20  rating system.  
df90: 49 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  If the applicati
dfa0: 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51 4c 69 74  on running SQLit
dfb0: 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 72 61  e..      /// cra
dfc0: 73 68 65 73 2c 20 74 68 65 20 64 61 74 61 20 77  shes, the data w
dfd0: 69 6c 6c 20 62 65 20 73 61 66 65 2c 20 62 75 74  ill be safe, but
dfe0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6d 69   the database mi
dff0: 67 68 74 20 62 65 63 6f 6d 65 20 63 6f 72 72 75  ght become corru
e000: 70 74 65 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  pted..      /// 
e010: 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  if the operating
e020: 20 73 79 73 74 65 6d 20 63 72 61 73 68 65 73 20   system crashes 
e030: 6f 72 20 74 68 65 20 63 6f 6d 70 75 74 65 72 20  or the computer 
e040: 6c 6f 73 65 73 20 70 6f 77 65 72 20 62 65 66 6f  loses power befo
e050: 72 65 20 74 68 61 74 0d 0a 20 20 20 20 20 20 2f  re that..      /
e060: 2f 2f 20 64 61 74 61 20 68 61 73 20 62 65 65 6e  // data has been
e070: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20   written to the 
e080: 64 69 73 6b 20 73 75 72 66 61 63 65 2e 0d 0a 20  disk surface... 
e090: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e0a0: 72 79 3e 0d 0a 20 20 20 20 20 20 4f 66 66 20 3d  ry>..      Off =
e0b0: 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   0,....      ///
e0c0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
e0d0: 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61    /// The databa
e0e0: 73 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20 73  se engine will s
e0f0: 74 69 6c 6c 20 73 79 6e 63 20 61 74 20 74 68 65  till sync at the
e100: 20 6d 6f 73 74 20 63 72 69 74 69 63 61 6c 20 6d   most critical m
e110: 6f 6d 65 6e 74 73 2c 20 62 75 74 0d 0a 20 20 20  oments, but..   
e120: 20 20 20 2f 2f 2f 20 6c 65 73 73 20 6f 66 74 65     /// less ofte
e130: 6e 20 74 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d  n than in FULL m
e140: 6f 64 65 2e 20 20 54 68 65 72 65 20 69 73 20 61  ode.  There is a
e150: 20 76 65 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f   very small (tho
e160: 75 67 68 20 6e 6f 6e 2d 7a 65 72 6f 29 0d 0a 20  ugh non-zero).. 
e170: 20 20 20 20 20 2f 2f 2f 20 63 68 61 6e 63 65 20       /// chance 
e180: 74 68 61 74 20 61 20 70 6f 77 65 72 20 66 61 69  that a power fai
e190: 6c 75 72 65 20 61 74 20 6a 75 73 74 20 74 68 65  lure at just the
e1a0: 20 77 72 6f 6e 67 20 74 69 6d 65 20 63 6f 75 6c   wrong time coul
e1b0: 64 20 63 6f 72 72 75 70 74 20 74 68 65 0d 0a 20  d corrupt the.. 
e1c0: 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61 73       /// databas
e1d0: 65 20 69 6e 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65  e in NORMAL mode
e1e0: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e1f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
e200: 6f 72 6d 61 6c 20 3d 20 31 2c 0d 0a 0d 0a 20 20  ormal = 1,....  
e210: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e220: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
e230: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
e240: 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 78 53   will use the xS
e250: 79 6e 63 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  ync method of th
e260: 65 20 56 46 53 20 74 6f 20 65 6e 73 75 72 65 20  e VFS to ensure 
e270: 74 68 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  that..      /// 
e280: 61 6c 6c 20 63 6f 6e 74 65 6e 74 20 69 73 20 73  all content is s
e290: 61 66 65 6c 79 20 77 72 69 74 74 65 6e 20 74 6f  afely written to
e2a0: 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61 63   the disk surfac
e2b0: 65 20 70 72 69 6f 72 20 74 6f 20 63 6f 6e 74 69  e prior to conti
e2c0: 6e 75 69 6e 67 2e 0d 0a 20 20 20 20 20 20 2f 2f  nuing...      //
e2d0: 2f 20 54 68 69 73 20 65 6e 73 75 72 65 73 20 74  / This ensures t
e2e0: 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6e 67  hat an operating
e2f0: 20 73 79 73 74 65 6d 20 63 72 61 73 68 20 6f 72   system crash or
e300: 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20 77   power failure w
e310: 69 6c 6c 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f  ill not..      /
e320: 2f 2f 20 63 6f 72 72 75 70 74 20 74 68 65 20 64  // corrupt the d
e330: 61 74 61 62 61 73 65 2e 20 20 46 55 4c 4c 20 73  atabase.  FULL s
e340: 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 76 65  ynchronous is ve
e350: 72 79 20 73 61 66 65 2c 20 62 75 74 20 69 74 20  ry safe, but it 
e360: 69 73 20 61 6c 73 6f 0d 0a 20 20 20 20 20 20 2f  is also..      /
e370: 2f 2f 20 73 6c 6f 77 65 72 2e 0d 0a 20 20 20 20  // slower...    
e380: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e390: 0d 0a 20 20 20 20 20 20 46 75 6c 6c 20 3d 20 32  ..      Full = 2
e3a0: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
e3b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
e3c0: 54 68 65 20 72 65 71 75 65 73 74 65 64 20 63 6f  The requested co
e3d0: 6d 6d 61 6e 64 20 65 78 65 63 75 74 69 6f 6e 20  mmand execution 
e3e0: 74 79 70 65 2e 20 20 54 68 69 73 20 63 6f 6e 74  type.  This cont
e3f0: 72 6f 6c 73 20 77 68 69 63 68 20 6d 65 74 68 6f  rols which metho
e400: 64 20 6f 66 20 74 68 65 0d 0a 20 20 2f 2f 2f 20  d of the..  /// 
e410: 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
e420: 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62 6a  eCommand" /> obj
e430: 65 63 74 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  ect will be call
e440: 65 64 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ed...  /// </sum
e450: 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20  mary>..  public 
e460: 65 6e 75 6d 20 53 51 4c 69 74 65 45 78 65 63 75  enum SQLiteExecu
e470: 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20  teType..  {..   
e480: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e490: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 44 6f 20 6e  ..      /// Do n
e4a0: 6f 74 68 69 6e 67 2e 20 20 4e 6f 20 6d 65 74 68  othing.  No meth
e4b0: 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65  od will be calle
e4c0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
e4d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e4e0: 4e 6f 6e 65 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20  None = 0,....   
e4f0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e500: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e510: 63 6f 6d 6d 61 6e 64 20 69 73 20 6e 6f 74 20 65  command is not e
e520: 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75 72  xpected to retur
e530: 6e 20 61 20 72 65 73 75 6c 74 20 2d 4f 52 2d 20  n a result -OR- 
e540: 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 6e 6f  the result is no
e550: 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 65 65  t..      /// nee
e560: 64 65 64 2e 20 20 54 68 65 20 3c 73 65 65 20 63  ded.  The <see c
e570: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
e580: 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75 65  nd.ExecuteNonQue
e590: 72 79 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20  ry()" /> or..   
e5a0: 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66     /// <see cref
e5b0: 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
e5c0: 45 78 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28  ExecuteNonQuery(
e5d0: 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29  CommandBehavior)
e5e0: 22 20 2f 3e 20 20 6d 65 74 68 6f 64 0d 0a 20 20  " />  method..  
e5f0: 20 20 20 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20      /// will be 
e600: 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f  called...      /
e610: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e620: 20 20 20 20 20 4e 6f 6e 51 75 65 72 79 20 3d 20       NonQuery = 
e630: 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
e640: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e650: 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64   /// The command
e660: 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20   is expected to 
e670: 72 65 74 75 72 6e 20 61 20 73 63 61 6c 61 72 20  return a scalar 
e680: 72 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20  result -OR- the 
e690: 72 65 73 75 6c 74 20 73 68 6f 75 6c 64 0d 0a 20  result should.. 
e6a0: 20 20 20 20 20 2f 2f 2f 20 62 65 20 6c 69 6d 69       /// be limi
e6b0: 74 65 64 20 74 6f 20 61 20 73 63 61 6c 61 72 20  ted to a scalar 
e6c0: 72 65 73 75 6c 74 2e 20 20 54 68 65 20 3c 73 65  result.  The <se
e6d0: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
e6e0: 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63 61  mmand.ExecuteSca
e6f0: 6c 61 72 28 29 22 20 2f 3e 0d 0a 20 20 20 20 20  lar()" />..     
e700: 20 2f 2f 2f 20 6f 72 20 3c 73 65 65 20 63 72 65   /// or <see cre
e710: 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64  f="SQLiteCommand
e720: 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72 28 43  .ExecuteScalar(C
e730: 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f 72 29 22  ommandBehavior)"
e740: 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d   /> method will.
e750: 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 20 63 61  .      /// be ca
e760: 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lled...      ///
e770: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e780: 20 20 20 53 63 61 6c 61 72 20 3d 20 32 2c 0d 0a     Scalar = 2,..
e790: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e7a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e7b0: 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20   The command is 
e7c0: 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75  expected to retu
e7d0: 72 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  rn <see cref="SQ
e7e0: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 22 20  LiteDataReader" 
e7f0: 2f 3e 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20  /> result...    
e800: 20 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63    /// The <see c
e810: 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
e820: 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65 72  nd.ExecuteReader
e830: 28 29 22 20 2f 3e 20 6f 72 0d 0a 20 20 20 20 20  ()" /> or..     
e840: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
e850: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78  SQLiteCommand.Ex
e860: 65 63 75 74 65 52 65 61 64 65 72 28 43 6f 6d 6d  ecuteReader(Comm
e870: 61 6e 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e  andBehavior)" />
e880: 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20   method will..  
e890: 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65      /// be calle
e8a0: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
e8b0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e8c0: 52 65 61 64 65 72 20 3d 20 33 2c 0d 0a 0d 0a 20  Reader = 3,.... 
e8d0: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
e8e0: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73  y>..      /// Us
e8f0: 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 63 6f  e the default co
e900: 6d 6d 61 6e 64 20 65 78 65 63 75 74 69 6f 6e 20  mmand execution 
e910: 74 79 70 65 2e 20 20 55 73 69 6e 67 20 74 68 69  type.  Using thi
e920: 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 73  s value is the s
e930: 61 6d 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  ame..      /// a
e940: 73 20 75 73 69 6e 67 20 74 68 65 20 3c 73 65 65  s using the <see
e950: 20 63 72 65 66 3d 22 53 51 4c 69 74 65 45 78 65   cref="SQLiteExe
e960: 63 75 74 65 54 79 70 65 2e 4e 6f 6e 51 75 65 72  cuteType.NonQuer
e970: 79 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  y" /> value...  
e980: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e990: 79 3e 0d 0a 20 20 20 20 20 20 44 65 66 61 75 6c  y>..      Defaul
e9a0: 74 20 3d 20 4e 6f 6e 51 75 65 72 79 20 2f 2a 20  t = NonQuery /* 
e9b0: 54 4f 44 4f 3a 20 47 6f 6f 64 20 64 65 66 61 75  TODO: Good defau
e9c0: 6c 74 3f 20 2a 2f 0d 0a 20 20 7d 0d 0a 0d 0a 20  lt? */..  }.... 
e9d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e9e0: 20 20 2f 2f 2f 20 54 68 65 20 61 63 74 69 6f 6e    /// The action
e9f0: 20 63 6f 64 65 20 72 65 73 70 6f 6e 73 69 62 6c   code responsibl
ea00: 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e  e for the curren
ea10: 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20  t call into the 
ea20: 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f  authorizer...  /
ea30: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ea40: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c   public enum SQL
ea50: 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41 63 74  iteAuthorizerAct
ea60: 69 6f 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20  ionCode..  {..  
ea70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
ea80: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20  >..      /// No 
ea90: 61 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20  action is being 
eaa0: 70 65 72 66 6f 72 6d 65 64 2e 20 20 54 68 69 73  performed.  This
eab0: 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 20 6e 6f   value should no
eac0: 74 20 62 65 20 75 73 65 64 20 66 72 6f 6d 0d 0a  t be used from..
ead0: 20 20 20 20 20 20 2f 2f 2f 20 65 78 74 65 72 6e        /// extern
eae0: 61 6c 20 63 6f 64 65 2e 0d 0a 20 20 20 20 20 20  al code...      
eaf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
eb00: 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 2d 31 2c        None = -1,
eb10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
eb20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
eb30: 2f 2f 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65  // No longer use
eb40: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
eb50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
eb60: 43 6f 70 79 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20  Copy = 0,....   
eb70: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
eb80: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e 20 69  ..      /// An i
eb90: 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 63 72 65  ndex will be cre
eba0: 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ated.  The actio
ebb0: 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
ebc0: 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20  ents are the..  
ebd0: 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 20 6e 61      /// index na
ebe0: 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65  me and the table
ebf0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
ec00: 2f 20 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  / ..      /// </
ec10: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
ec20: 43 72 65 61 74 65 49 6e 64 65 78 20 3d 20 31 2c  CreateIndex = 1,
ec30: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
ec40: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
ec50: 2f 2f 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20  // A table will 
ec60: 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
ec70: 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
ec80: 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
ec90: 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61  he..      /// ta
eca0: 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  ble name and a n
ecb0: 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
ecc0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
ecd0: 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 61  ..      CreateTa
ece0: 62 6c 65 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20  ble = 2,....    
ecf0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
ed00: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d  .      /// A tem
ed10: 70 6f 72 61 72 79 20 69 6e 64 65 78 20 77 69 6c  porary index wil
ed20: 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
ed30: 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
ed40: 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
ed50: 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
ed60: 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74  index name and t
ed70: 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
ed80: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ed90: 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61  ary>..      Crea
eda0: 74 65 54 65 6d 70 49 6e 64 65 78 20 3d 20 33 2c  teTempIndex = 3,
edb0: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
edc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
edd0: 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74  // A temporary t
ede0: 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72 65  able will be cre
edf0: 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  ated.  The actio
ee00: 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
ee10: 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
ee20: 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
ee30: 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
ee40: 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
ee50: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ee60: 20 20 43 72 65 61 74 65 54 65 6d 70 54 61 62 6c    CreateTempTabl
ee70: 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 4,....      
ee80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ee90: 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
eea0: 72 61 72 79 20 74 72 69 67 67 65 72 20 77 69 6c  rary trigger wil
eeb0: 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
eec0: 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
eed0: 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
eee0: 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
eef0: 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64  trigger name and
ef00: 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
ef10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
ef20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
ef30: 65 61 74 65 54 65 6d 70 54 72 69 67 67 65 72 20  eateTempTrigger 
ef40: 3d 20 35 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 5,....      //
ef50: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ef60: 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
ef70: 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20  ry view will be 
ef80: 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61 63  created.  The ac
ef90: 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
efa0: 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20  guments are..   
efb0: 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65 77 20     /// the view 
efc0: 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20  name and a null 
efd0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
efe0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
eff0: 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 56 69      CreateTempVi
f000: 65 77 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20  ew = 6,....     
f010: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f020: 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 69 67        /// A trig
f030: 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ger will be crea
f040: 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
f050: 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
f060: 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20  nts are the..   
f070: 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72 20 6e     /// trigger n
f080: 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
f090: 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
f0a0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
f0b0: 20 20 20 20 20 43 72 65 61 74 65 54 72 69 67 67       CreateTrigg
f0c0: 65 72 20 3d 20 37 2c 0d 0a 0d 0a 20 20 20 20 20  er = 7,....     
f0d0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f0e0: 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 65 77        /// A view
f0f0: 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
f100: 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
f110: 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
f120: 20 61 72 65 20 74 68 65 20 76 69 65 77 0d 0a 20   are the view.. 
f130: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e       /// name an
f140: 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
f150: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
f160: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
f170: 61 74 65 56 69 65 77 20 3d 20 38 2c 0d 0a 0d 0a  ateView = 8,....
f180: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f190: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
f1a0: 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
f1b0: 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
f1c0: 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
f1d0: 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
f1e0: 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
f1f0: 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  e the table name
f200: 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
f210: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
f220: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f230: 44 65 6c 65 74 65 20 3d 20 39 2c 0d 0a 0d 0a 20  Delete = 9,.... 
f240: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
f250: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e  y>..      /// An
f260: 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64   index will be d
f270: 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
f280: 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
f290: 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a  uments are the..
f2a0: 20 20 20 20 20 20 2f 2f 2f 20 69 6e 64 65 78 20        /// index 
f2b0: 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
f2c0: 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
f2d0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f2e0: 20 20 20 20 20 20 44 72 6f 70 49 6e 64 65 78 20        DropIndex 
f2f0: 3d 20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 10,....      /
f300: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f310: 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
f320: 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
f330: 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
f340: 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
f350: 61 72 65 20 74 68 65 20 74 61 62 6c 65 73 0d 0a  are the tables..
f360: 20 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61        /// name a
f370: 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
f380: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
f390: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72  mmary>..      Dr
f3a0: 6f 70 54 61 62 6c 65 20 3d 20 31 31 2c 0d 0a 0d  opTable = 11,...
f3b0: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
f3c0: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
f3d0: 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65  A temporary inde
f3e0: 78 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  x will be droppe
f3f0: 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
f400: 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
f410: 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
f420: 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
f430: 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
f440: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
f450: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
f460: 20 44 72 6f 70 54 65 6d 70 49 6e 64 65 78 20 3d   DropTempIndex =
f470: 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   12,....      //
f480: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f490: 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61     /// A tempora
f4a0: 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65  ry table will be
f4b0: 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
f4c0: 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
f4d0: 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20  rguments are..  
f4e0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c      /// the tabl
f4f0: 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
f500: 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
f510: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f520: 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 61        DropTempTa
f530: 62 6c 65 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20  ble = 13,....   
f540: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f550: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
f560: 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65 72 20  mporary trigger 
f570: 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
f580: 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
f590: 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d  cific arguments.
f5a0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74  .      /// are t
f5b0: 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20  he trigger name 
f5c0: 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
f5d0: 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
f5e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
f5f0: 20 44 72 6f 70 54 65 6d 70 54 72 69 67 67 65 72   DropTempTrigger
f600: 20 3d 20 31 34 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 14,....      
f610: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f620: 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
f630: 72 61 72 79 20 76 69 65 77 20 77 69 6c 6c 20 62  rary view will b
f640: 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
f650: 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
f660: 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20  arguments are.. 
f670: 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 76 69 65       /// the vie
f680: 77 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  w name and a nul
f690: 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
f6a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f6b0: 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 56 69        DropTempVi
f6c0: 65 77 20 3d 20 31 35 2c 0d 0a 0d 0a 20 20 20 20  ew = 15,....    
f6d0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f6e0: 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 69  .      /// A tri
f6f0: 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f  gger will be dro
f700: 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
f710: 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
f720: 65 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20  ents are the..  
f730: 20 20 20 20 2f 2f 2f 20 74 72 69 67 67 65 72 20      /// trigger 
f740: 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
f750: 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
f760: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f770: 20 20 20 20 20 20 44 72 6f 70 54 72 69 67 67 65        DropTrigge
f780: 72 20 3d 20 31 36 2c 0d 0a 0d 0a 20 20 20 20 20  r = 16,....     
f790: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
f7a0: 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 65 77        /// A view
f7b0: 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64   will be dropped
f7c0: 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
f7d0: 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
f7e0: 20 61 72 65 20 74 68 65 20 76 69 65 77 0d 0a 20   are the view.. 
f7f0: 20 20 20 20 20 2f 2f 2f 20 6e 61 6d 65 20 61 6e       /// name an
f800: 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
f810: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
f820: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f  mary>..      Dro
f830: 70 56 69 65 77 20 3d 20 31 37 2c 0d 0a 0d 0a 20  pView = 17,.... 
f840: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
f850: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 6e  y>..      /// An
f860: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
f870: 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
f880: 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
f890: 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
f8a0: 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
f8b0: 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  e the table name
f8c0: 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
f8d0: 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
f8e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
f8f0: 49 6e 73 65 72 74 20 3d 20 31 38 2c 0d 0a 0d 0a  Insert = 18,....
f900: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
f910: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
f920: 20 50 52 41 47 4d 41 20 73 74 61 74 65 6d 65 6e   PRAGMA statemen
f930: 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74  t will be execut
f940: 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
f950: 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
f960: 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
f970: 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  e the name of th
f980: 65 20 50 52 41 47 4d 41 20 61 6e 64 20 74 68 65  e PRAGMA and the
f990: 20 6e 65 77 20 76 61 6c 75 65 20 6f 72 20 61 20   new value or a 
f9a0: 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
f9b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f9c0: 3e 0d 0a 20 20 20 20 20 20 50 72 61 67 6d 61 20  >..      Pragma 
f9d0: 3d 20 31 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 19,....      /
f9e0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f9f0: 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
fa00: 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 62 65 20 72  column will be r
fa10: 65 61 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ead.  The action
fa20: 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
fa30: 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20  nts are the..   
fa40: 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e 61 6d     /// table nam
fa50: 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e  e and the column
fa60: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
fa70: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
fa80: 20 20 20 20 52 65 61 64 20 3d 20 32 30 2c 0d 0a      Read = 20,..
fa90: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
faa0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
fab0: 20 41 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d   A SELECT statem
fac0: 65 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63  ent will be exec
fad0: 75 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  uted.  The actio
fae0: 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
faf0: 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
fb00: 61 72 65 20 62 6f 74 68 20 6e 75 6c 6c 20 76 61  are both null va
fb10: 6c 75 65 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  lues...      ///
fb20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
fb30: 20 20 20 53 65 6c 65 63 74 20 3d 20 32 31 2c 0d     Select = 21,.
fb40: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
fb50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
fb60: 2f 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  / A transaction 
fb70: 77 69 6c 6c 20 62 65 20 73 74 61 72 74 65 64 2c  will be started,
fb80: 20 63 6f 6d 6d 69 74 74 65 64 2c 20 6f 72 20 72   committed, or r
fb90: 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68 65  olled back.  The
fba0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69  ..      /// acti
fbb0: 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
fbc0: 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e 61  ments are the na
fbd0: 6d 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74  me of the operat
fbe0: 69 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20 20  ion (BEGIN,..   
fbf0: 20 20 20 2f 2f 2f 20 43 4f 4d 4d 49 54 2c 20 6f     /// COMMIT, o
fc00: 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20  r ROLLBACK) and 
fc10: 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
fc20: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
fc30: 72 79 3e 0d 0a 20 20 20 20 20 20 54 72 61 6e 73  ry>..      Trans
fc40: 61 63 74 69 6f 6e 20 3d 20 32 32 2c 0d 0a 0d 0a  action = 22,....
fc50: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
fc60: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
fc70: 6e 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  n UPDATE stateme
fc80: 6e 74 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75  nt will be execu
fc90: 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
fca0: 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
fcb0: 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  nts..      /// a
fcc0: 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d  re the table nam
fcd0: 65 20 61 6e 64 20 74 68 65 20 63 6f 6c 75 6d 6e  e and the column
fce0: 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f   name...      //
fcf0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
fd00: 20 20 20 20 55 70 64 61 74 65 20 3d 20 32 33 2c      Update = 23,
fd10: 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
fd20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
fd30: 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20 77 69  // A database wi
fd40: 6c 6c 20 62 65 20 61 74 74 61 63 68 65 64 20 74  ll be attached t
fd50: 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  o the connection
fd60: 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
fd70: 65 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f  ecific..      //
fd80: 2f 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  / arguments are 
fd90: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
fda0: 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
fdb0: 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
fdc0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
fdd0: 20 20 20 20 20 20 41 74 74 61 63 68 20 3d 20 32        Attach = 2
fde0: 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  4,....      /// 
fdf0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
fe00: 20 2f 2f 2f 20 41 20 64 61 74 61 62 61 73 65 20   /// A database 
fe10: 77 69 6c 6c 20 62 65 20 64 65 74 61 63 68 65 64  will be detached
fe20: 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 6e 65 63   from the connec
fe30: 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69 6f  tion.  The actio
fe40: 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20  n-specific..    
fe50: 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20    /// arguments 
fe60: 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  are the database
fe70: 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
fe80: 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
fe90: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
fea0: 20 20 20 20 20 44 65 74 61 63 68 20 3d 20 32 35       Detach = 25
feb0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
fec0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
fed0: 2f 2f 2f 20 54 68 65 20 73 63 68 65 6d 61 20 6f  /// The schema o
fee0: 66 20 61 20 74 61 62 6c 65 20 77 69 6c 6c 20 62  f a table will b
fef0: 65 20 61 6c 74 65 72 65 64 2e 20 20 54 68 65 20  e altered.  The 
ff00: 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
ff10: 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
ff20: 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 64 61 74   /// are the dat
ff30: 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 74  abase name and t
ff40: 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a  he table name...
ff50: 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
ff60: 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6c 74 65  ary>..      Alte
ff70: 72 54 61 62 6c 65 20 3d 20 32 36 2c 0d 0a 0d 0a  rTable = 26,....
ff80: 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
ff90: 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
ffa0: 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20  n index will be 
ffb0: 64 65 6c 65 74 65 64 20 61 6e 64 20 74 68 65 6e  deleted and then
ffc0: 20 72 65 63 72 65 61 74 65 64 2e 20 20 54 68 65   recreated.  The
ffd0: 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
ffe0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75  ..      /// argu
fff0: 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 69 6e  ments are the in
10000 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e  dex name and a n
10010 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20  ull value...    
10020 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
10030 0d 0a 20 20 20 20 20 20 52 65 69 6e 64 65 78 20  ..      Reindex 
10040 3d 20 32 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 27,....      /
10050 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10060 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
10070 77 69 6c 6c 20 62 65 20 61 6e 61 6c 79 7a 65 64  will be analyzed
10080 20 74 6f 20 67 61 74 68 65 72 73 20 73 74 61 74   to gathers stat
10090 69 73 74 69 63 73 20 61 62 6f 75 74 20 69 74 2e  istics about it.
100a0 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f    The..      ///
100b0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
100c0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
100d0 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  he table name an
100e0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
100f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
10100 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41 6e 61  mary>..      Ana
10110 6c 79 7a 65 20 3d 20 32 38 2c 0d 0a 0d 0a 20 20  lyze = 28,....  
10120 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10130 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76  >..      /// A v
10140 69 72 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c  irtual table wil
10150 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
10160 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
10170 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
10180 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
10190 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
101a0 68 65 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d  he module name..
101b0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
101c0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
101d0 61 74 65 56 74 61 62 6c 65 20 3d 20 32 39 2c 0d  ateVtable = 29,.
101e0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
101f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10200 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c  / A virtual tabl
10210 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  e will be droppe
10220 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
10230 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
10240 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
10250 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
10260 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e  and the module n
10270 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
10280 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
10290 20 20 44 72 6f 70 56 74 61 62 6c 65 20 3d 20 33    DropVtable = 3
102a0 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  0,....      /// 
102b0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
102c0 20 2f 2f 2f 20 41 20 53 51 4c 20 66 75 6e 63 74   /// A SQL funct
102d0 69 6f 6e 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c  ion will be call
102e0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
102f0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
10300 74 73 20 61 72 65 20 61 0d 0a 20 20 20 20 20 20  ts are a..      
10310 2f 2f 2f 20 6e 75 6c 6c 20 76 61 6c 75 65 20 61  /// null value a
10320 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  nd the function 
10330 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
10340 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10350 20 20 20 46 75 6e 63 74 69 6f 6e 20 3d 20 33 31     Function = 31
10360 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
10370 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10380 2f 2f 2f 20 41 20 73 61 76 65 70 6f 69 6e 74 20  /// A savepoint 
10390 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2c  will be created,
103a0 20 72 65 6c 65 61 73 65 64 2c 20 6f 72 20 72 6f   released, or ro
103b0 6c 6c 65 64 20 62 61 63 6b 2e 20 20 54 68 65 0d  lled back.  The.
103c0 0a 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f  .      /// actio
103d0 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
103e0 65 6e 74 73 20 61 72 65 20 74 68 65 20 6e 61 6d  ents are the nam
103f0 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69  e of the operati
10400 6f 6e 20 28 42 45 47 49 4e 2c 0d 0a 20 20 20 20  on (BEGIN,..    
10410 20 20 2f 2f 2f 20 52 45 4c 45 41 53 45 2c 20 6f    /// RELEASE, o
10420 72 20 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20  r ROLLBACK) and 
10430 74 68 65 20 73 61 76 65 70 6f 69 6e 74 20 6e 61  the savepoint na
10440 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
10450 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10460 20 53 61 76 65 70 6f 69 6e 74 20 3d 20 33 32 0d   Savepoint = 32.
10470 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73  .  }....  /// <s
10480 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54  ummary>..  /// T
10490 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66  he return code f
104a0 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 63  or the current c
104b0 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 61 75 74  all into the aut
104c0 68 6f 72 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20  horizer...  /// 
104d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
104e0 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
104f0 41 75 74 68 6f 72 69 7a 65 72 52 65 74 75 72 6e  AuthorizerReturn
10500 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20  Code..  {..     
10510 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10520 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 63        /// The ac
10530 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 61 6c 6c  tion will be all
10540 6f 77 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  owed...      ///
10550 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
10560 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a 0d 0a 20 20     Ok = 0,....  
10570 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10580 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
10590 20 6f 76 65 72 61 6c 6c 20 61 63 74 69 6f 6e 20   overall action 
105a0 77 69 6c 6c 20 62 65 20 64 69 73 61 6c 6c 6f 77  will be disallow
105b0 65 64 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 20  ed and an error 
105c0 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 62 65 0d  message will be.
105d0 0a 20 20 20 20 20 20 2f 2f 2f 20 72 65 74 75 72  .      /// retur
105e0 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 71 75 65  ned from the que
105f0 72 79 20 70 72 65 70 61 72 61 74 69 6f 6e 20 6d  ry preparation m
10600 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 2f 2f  ethod...      //
10610 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
10620 20 20 20 20 44 65 6e 79 20 3d 20 31 2c 0d 0a 0d      Deny = 1,...
10630 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
10640 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
10650 54 68 65 20 73 70 65 63 69 66 69 63 20 61 63 74  The specific act
10660 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61  ion will be disa
10670 6c 6c 6f 77 65 64 3b 20 68 6f 77 65 76 65 72 2c  llowed; however,
10680 20 74 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74   the overall act
10690 69 6f 6e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77  ion..      /// w
106a0 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 2e 20 20 54  ill continue.  T
106b0 68 65 20 65 78 61 63 74 20 65 66 66 65 63 74 73  he exact effects
106c0 20 6f 66 20 74 68 69 73 20 72 65 74 75 72 6e 20   of this return 
106d0 63 6f 64 65 20 76 61 72 79 20 64 65 70 65 6e 64  code vary depend
106e0 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f  ing..      /// o
106f0 6e 20 74 68 65 20 73 70 65 63 69 66 69 63 20 61  n the specific a
10700 63 74 69 6f 6e 2c 20 70 6c 65 61 73 65 20 72 65  ction, please re
10710 66 65 72 20 74 6f 20 74 68 65 20 53 51 4c 69 74  fer to the SQLit
10720 65 20 63 6f 72 65 20 6c 69 62 72 61 72 79 0d 0a  e core library..
10730 20 20 20 20 20 20 2f 2f 2f 20 64 6f 63 75 6d 65        /// docume
10740 6e 74 61 74 69 6f 6e 20 66 6f 72 20 66 75 74 68  ntation for futh
10750 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20  er details...   
10760 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10770 3e 0d 0a 20 20 20 20 20 20 49 67 6e 6f 72 65 20  >..      Ignore 
10780 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 2..  }....  //
10790 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
107a0 2f 2f 20 43 6c 61 73 73 20 75 73 65 64 20 69 6e  // Class used in
107b0 74 65 72 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65  ternally to dete
107c0 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61 74 79  rmine the dataty
107d0 70 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69  pe of a column i
107e0 6e 20 61 20 72 65 73 75 6c 74 73 65 74 0d 0a 20  n a resultset.. 
107f0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
10800 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
10810 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 54  ed class SQLiteT
10820 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f  ype..  {..    //
10830 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10840 20 2f 2f 2f 20 54 68 65 20 44 62 54 79 70 65 20   /// The DbType 
10850 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f  of the column, o
10860 72 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 20  r DbType.Object 
10870 69 66 20 69 74 20 63 61 6e 6e 6f 74 20 62 65 20  if it cannot be 
10880 64 65 74 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20  determined..    
10890 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
108a0 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54      internal DbT
108b0 79 70 65 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f  ype Type;..    /
108c0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
108d0 20 20 2f 2f 2f 20 54 68 65 20 61 66 66 69 6e 69    /// The affini
108e0 74 79 20 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20  ty of a column, 
108f0 75 73 65 64 20 66 6f 72 20 65 78 70 72 65 73 73  used for express
10900 69 6f 6e 73 20 6f 72 20 77 68 65 6e 20 54 79 70  ions or when Typ
10910 65 20 69 73 20 44 62 54 79 70 65 2e 4f 62 6a 65  e is DbType.Obje
10920 63 74 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ct..    /// </su
10930 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
10940 72 6e 61 6c 20 54 79 70 65 41 66 66 69 6e 69 74  rnal TypeAffinit
10950 79 20 41 66 66 69 6e 69 74 79 3b 0d 0a 20 20 7d  y Affinity;..  }
10960 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ....  //////////
10970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109b0 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61  ///....  interna
109c0 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
109d0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 0d 0a  QLiteDbTypeMap..
109e0 20 20 20 20 20 20 3a 20 44 69 63 74 69 6f 6e 61        : Dictiona
109f0 72 79 3c 73 74 72 69 6e 67 2c 20 53 51 4c 69 74  ry<string, SQLit
10a00 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 0d  eDbTypeMapping>.
10a10 0a 20 20 7b 0d 0a 20 20 20 20 20 20 70 72 69 76  .  {..      priv
10a20 61 74 65 20 44 69 63 74 69 6f 6e 61 72 79 3c 44  ate Dictionary<D
10a30 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54  bType, SQLiteDbT
10a40 79 70 65 4d 61 70 70 69 6e 67 3e 20 72 65 76 65  ypeMapping> reve
10a50 72 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  rse;....      //
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
10ab0 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65 44   private SQLiteD
10ac0 62 54 79 70 65 4d 61 70 28 29 0d 0a 20 20 20 20  bTypeMap()..    
10ad0 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e 65 77        : base(new
10ae0 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67 43   TypeNameStringC
10af0 6f 6d 70 61 72 65 72 28 29 29 0d 0a 20 20 20 20  omparer())..    
10b00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 72    {..          r
10b10 65 76 65 72 73 65 20 3d 20 6e 65 77 20 44 69 63  everse = new Dic
10b20 74 69 6f 6e 61 72 79 3c 44 62 54 79 70 65 2c 20  tionary<DbType, 
10b30 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10b40 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20 7d  ing>();..      }
10b50 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
10b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ba0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62  ///....      pub
10bb0 6c 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  lic SQLiteDbType
10bc0 4d 61 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Map(..          
10bd0 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69  IEnumerable<SQLi
10be0 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e  teDbTypeMapping>
10bf0 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20   collection..   
10c00 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
10c10 20 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20      : this()..  
10c20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10c30 20 41 64 64 28 63 6f 6c 6c 65 63 74 69 6f 6e 29   Add(collection)
10c40 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
10c50 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10ca0 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f  .      public vo
10cb0 69 64 20 41 64 64 28 0d 0a 20 20 20 20 20 20 20  id Add(..       
10cc0 20 20 20 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53     IEnumerable<S
10cd0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10ce0 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a  ng> collection..
10cf0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
10d00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
10d10 69 66 20 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d  if (collection =
10d20 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10d30 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
10d40 20 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63   ArgumentNullExc
10d50 65 70 74 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69  eption("collecti
10d60 6f 6e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  on");....       
10d70 20 20 20 66 6f 72 65 61 63 68 20 28 53 51 4c 69     foreach (SQLi
10d80 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
10d90 69 74 65 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69  item in collecti
10da0 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on)..           
10db0 20 20 20 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20     Add(item);.. 
10dc0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10e20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41     public void A
10e30 64 64 28 53 51 4c 69 74 65 44 62 54 79 70 65 4d  dd(SQLiteDbTypeM
10e40 61 70 70 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20  apping item)..  
10e50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10e60 20 69 66 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c   if (item == nul
10e70 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
10e80 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
10e90 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
10ea0 6e 28 22 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20  n("item");....  
10eb0 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65 6d          if (item
10ec0 2e 74 79 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c  .typeName == nul
10ed0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
10ee0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
10ef0 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 69  mentException("i
10f00 74 65 6d 20 74 79 70 65 20 6e 61 6d 65 20 63 61  tem type name ca
10f10 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d  nnot be null");.
10f20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 62 61 73  ...          bas
10f30 65 2e 41 64 64 28 69 74 65 6d 2e 74 79 70 65 4e  e.Add(item.typeN
10f40 61 6d 65 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20  ame, item);.... 
10f50 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65           if (ite
10f60 6d 2e 70 72 69 6d 61 72 79 29 0d 0a 20 20 20 20  m.primary)..    
10f70 20 20 20 20 20 20 20 20 20 20 72 65 76 65 72 73            revers
10f80 65 2e 41 64 64 28 69 74 65 6d 2e 64 61 74 61 54  e.Add(item.dataT
10f90 79 70 65 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20  ype, item);..   
10fa0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f     }....      //
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ff0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
11000 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79   public bool Try
11010 47 65 74 56 61 6c 75 65 28 44 62 54 79 70 65 20  GetValue(DbType 
11020 6b 65 79 2c 20 6f 75 74 20 53 51 4c 69 74 65 44  key, out SQLiteD
11030 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
11040 75 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  ue)..      {..  
11050 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65          if (reve
11060 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  rse == null)..  
11070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11080 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d           value =
11090 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
110a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
110b0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  se;..          }
110c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
110d0 74 75 72 6e 20 72 65 76 65 72 73 65 2e 54 72 79  turn reverse.Try
110e0 47 65 74 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75  GetValue(key, ou
110f0 74 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  t value);..     
11100 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f   }..  }....  ///
11110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11160 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
11170 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79  class SQLiteDbTy
11180 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a  peMapping..  {..
11190 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
111a0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
111b0 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  (..        strin
111c0 67 20 6e 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a  g newTypeName,..
111d0 20 20 20 20 20 20 20 20 44 62 54 79 70 65 20 6e          DbType n
111e0 65 77 44 61 74 61 54 79 70 65 2c 0d 0a 20 20 20  ewDataType,..   
111f0 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69       bool newPri
11200 6d 61 72 79 0d 0a 20 20 20 20 20 20 20 20 29 0d  mary..        ).
11210 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 74 79  .    {..      ty
11220 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54 79 70 65  peName = newType
11230 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 64 61 74  Name;..      dat
11240 61 54 79 70 65 20 3d 20 6e 65 77 44 61 74 61 54  aType = newDataT
11250 79 70 65 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d  ype;..      prim
11260 61 72 79 20 3d 20 6e 65 77 50 72 69 6d 61 72 79  ary = newPrimary
11270 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
11280 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67 20  internal string 
11290 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69  typeName;..    i
112a0 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65 20 64  nternal DbType d
112b0 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e  ataType;..    in
112c0 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d  ternal bool prim
112d0 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69  ary;..  }....  i
112e0 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63  nternal sealed c
112f0 6c 61 73 73 20 54 79 70 65 4e 61 6d 65 53 74 72  lass TypeNameStr
11300 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a 20 49 45  ingComparer : IE
11310 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c  qualityComparer<
11320 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20  string>..  {..  
11330 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61 6c    #region IEqual
11340 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 69  ityComparer<stri
11350 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ng> Members..   
11360 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75   public bool Equ
11370 61 6c 73 28 0d 0a 20 20 20 20 20 20 73 74 72 69  als(..      stri
11380 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20  ng left,..      
11390 73 74 72 69 6e 67 20 72 69 67 68 74 0d 0a 20 20  string right..  
113a0 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20      )..    {..  
113b0 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
113c0 67 2e 45 71 75 61 6c 73 28 6c 65 66 74 2c 20 72  g.Equals(left, r
113d0 69 67 68 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ight, StringComp
113e0 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
113f0 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20 20  noreCase);..    
11400 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11450 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
11460 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f  ic int GetHashCo
11470 64 65 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e  de(..      strin
11480 67 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 29  g value..      )
11490 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f  ..    {..      /
114a0 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  /..      // NOTE
114b0 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67  : The only thing
114c0 20 74 68 61 74 20 77 65 20 6d 75 73 74 20 67 75   that we must gu
114d0 61 72 61 6e 74 65 65 20 68 65 72 65 2c 20 61 63  arantee here, ac
114e0 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  cording..      /
114f0 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65 20 4d  /       to the M
11500 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  SDN documentatio
11510 6e 20 66 6f 72 20 49 45 71 75 61 6c 69 74 79 43  n for IEqualityC
11520 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a 20 20 20  omparer, is..   
11530 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 61 74     //       that
11540 20 66 6f 72 20 74 77 6f 20 67 69 76 65 6e 20 73   for two given s
11550 74 72 69 6e 67 73 2c 20 69 66 20 45 71 75 61 6c  trings, if Equal
11560 73 20 72 65 74 75 72 6e 20 74 72 75 65 20 74 68  s return true th
11570 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  en..      //    
11580 20 20 20 74 68 65 20 74 77 6f 20 73 74 72 69 6e     the two strin
11590 67 73 20 6d 75 73 74 20 68 61 73 68 20 74 6f 20  gs must hash to 
115a0 74 68 65 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d  the same value..
115b0 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20  .      //..     
115c0 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
115d0 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f  ll)..#if !PLATFO
115e0 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41 4d 45 57  RM_COMPACTFRAMEW
115f0 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ORK..        ret
11600 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65  urn value.ToLowe
11610 72 49 6e 76 61 72 69 61 6e 74 28 29 2e 47 65 74  rInvariant().Get
11620 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c  HashCode();..#el
11630 73 65 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  se..        retu
11640 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72  rn value.ToLower
11650 28 29 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  ().GetHashCode()
11660 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
11670 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 74   else..        t
11680 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e  hrow new Argumen
11690 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22  tNullException("
116a0 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d  value");..    }.
116b0 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
116c0 0a 20 20 7d 0d 0a 7d 0d 0a                       .  }..}..