System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 007d8371013c511802d34c8e7eeeef0732f693cb:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20  soft.com).. *.. 
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a   risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20  */....namespace 
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53  te..{..  using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e  ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26  ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a   TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44    using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e  iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53  dif....  using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e  ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a  teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43    using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73  ic;..  using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f  tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74  n;..  using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f  em.Text;....  //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61  // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61  ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20  type conversion 
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65  services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72   SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62  ry>..  public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c  stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d  iteConvert..  {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
02f0: 66 61 6c 6c 62 61 63 6b 20 64 65 66 61 75 6c 74  fallback default
0300: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 77   database type w
0310: 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20 62  hen one cannot b
0320: 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  e obtained from 
0330: 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65 78 69 73  an..    /// exis
0340: 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  ting connection 
0350: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f  instance...    /
0360: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0370: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
0380: 69 63 20 72 65 61 64 6f 6e 6c 79 20 44 62 54 79  ic readonly DbTy
0390: 70 65 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75  pe FallbackDefau
03a0: 6c 74 44 62 54 79 70 65 20 3d 20 44 62 54 79 70  ltDbType = DbTyp
03b0: 65 2e 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20  e.Object;....   
03c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
03d0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 61 6c 6c      /// The fall
03e0: 62 61 63 6b 20 64 65 66 61 75 6c 74 20 64 61 74  back default dat
03f0: 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d 65 20  abase type name 
0400: 77 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f 74 20  when one cannot 
0410: 62 65 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  be obtained from
0420: 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e 20 65 78 69  ..    /// an exi
0430: 73 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69 6f 6e  sting connection
0440: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
0450: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0460: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
0470: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
0480: 69 6e 67 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  ing FallbackDefa
0490: 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 53 74  ultTypeName = St
04a0: 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 0d 0a 20  ring.Empty;.... 
04b0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
04c0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61  ..    /// The va
04d0: 6c 75 65 20 66 6f 72 20 74 68 65 20 55 6e 69 78  lue for the Unix
04e0: 20 65 70 6f 63 68 20 28 65 2e 67 2e 20 4a 61 6e   epoch (e.g. Jan
04f0: 75 61 72 79 20 31 2c 20 31 39 37 30 20 61 74 20  uary 1, 1970 at 
0500: 6d 69 64 6e 69 67 68 74 2c 20 69 6e 20 55 54 43  midnight, in UTC
0510: 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  )...    /// </su
0520: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 6f 74  mmary>..    prot
0530: 65 63 74 65 64 20 73 74 61 74 69 63 20 72 65 61  ected static rea
0540: 64 6f 6e 6c 79 20 44 61 74 65 54 69 6d 65 20 55  donly DateTime U
0550: 6e 69 78 45 70 6f 63 68 20 3d 0d 0a 20 20 20 20  nixEpoch =..    
0560: 20 20 20 20 6e 65 77 20 44 61 74 65 54 69 6d 65      new DateTime
0570: 28 31 39 37 30 2c 20 31 2c 20 31 2c 20 30 2c 20  (1970, 1, 1, 0, 
0580: 30 2c 20 30 2c 20 44 61 74 65 54 69 6d 65 4b 69  0, 0, DateTimeKi
0590: 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a 20 20 20 20  nd.Utc);....    
05a0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
05b0: 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c 75 65     /// The value
05c0: 20 6f 66 20 74 68 65 20 4f 4c 45 20 41 75 74 6f   of the OLE Auto
05d0: 6d 61 74 69 6f 6e 20 65 70 6f 63 68 20 72 65 70  mation epoch rep
05e0: 72 65 73 65 6e 74 65 64 20 61 73 20 61 20 4a 75  resented as a Ju
05f0: 6c 69 61 6e 20 64 61 79 2e 0d 0a 20 20 20 20 2f  lian day...    /
0600: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0610: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
0620: 63 20 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62 6c  c readonly doubl
0630: 65 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45  e OleAutomationE
0640: 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 20  pochAsJulianDay 
0650: 3d 20 32 34 31 35 30 31 38 2e 35 3b 0d 0a 0d 0a  = 2415018.5;....
0660: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0670: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 66  >..    /// The f
0680: 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 66 6f 72  ormat string for
0690: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73   DateTime values
06a0: 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 65 20   when using the 
06b0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
06c0: 20 6f 72 20 43 75 72 72 65 6e 74 43 75 6c 74 75   or CurrentCultu
06d0: 72 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 20  re formats...   
06e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
06f0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e  .    private con
0700: 73 74 20 73 74 72 69 6e 67 20 46 75 6c 6c 46 6f  st string FullFo
0710: 72 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d 4d 2d  rmat = "yyyy-MM-
0720: 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 66 66  ddTHH:mm:ss.ffff
0730: 66 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 2f 2f  fffK";....    //
0740: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0750: 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 6f 66   /// An array of
0760: 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 54 69   ISO-8601 DateTi
0770: 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 74 20  me formats that 
0780: 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 73 69  we support parsi
0790: 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ng...    /// </s
07a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69  ummary>..    pri
07b0: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
07c0: 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 46 6f  ng[] _datetimeFo
07d0: 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 72 69  rmats = new stri
07e0: 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 22 54  ng[] {..      "T
07f0: 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20  HHmmssK",..     
0800: 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 20 20   "THHmmK",..    
0810: 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46    "HH:mm:ss.FFFF
0820: 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22 48  FFFK",..      "H
0830: 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 20 20  H:mm:ssK",..    
0840: 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20    "HH:mmK",..   
0850: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48     "yyyy-MM-dd H
0860: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
0870: 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 43 20  ", /* NOTE: UTC 
0880: 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a 2f 0d  default (5). */.
0890: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
08a0: 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a  dd HH:mm:ssK",..
08b0: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
08c0: 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 20 20  d HH:mmK",..    
08d0: 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48    "yyyy-MM-ddTHH
08e0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 22  :mm:ss.FFFFFFFK"
08f0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0900: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d 0a 20  M-ddTHH:mmK",.. 
0910: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64       "yyyy-MM-dd
0920: 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20  THH:mm:ssK",..  
0930: 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d      "yyyyMMddHHm
0940: 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79  mssK",..      "y
0950: 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c 0d 0a  yyyMMddHHmmK",..
0960: 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 54        "yyyyMMddT
0970: 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 22 2c  HHmmssFFFFFFFK",
0980: 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d 73 73  ..      "THHmmss
0990: 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d  ",..      "THHmm
09a0: 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d  ",..      "HH:mm
09b0: 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a 20  :ss.FFFFFFF",.. 
09c0: 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 22 2c       "HH:mm:ss",
09d0: 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 22 2c  ..      "HH:mm",
09e0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d  ..      "yyyy-MM
09f0: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
0a00: 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20  FFFF", /* NOTE: 
0a10: 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c 74 20  Non-UTC default 
0a20: 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 20 20  (19). */..      
0a30: 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  "yyyy-MM-dd HH:m
0a40: 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 79  m:ss",..      "y
0a50: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 22  yyy-MM-dd HH:mm"
0a60: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0a70: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
0a80: 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 20 22  FFFFF",..      "
0a90: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
0aa0: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
0ab0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 22 2c  MM-ddTHH:mm:ss",
0ac0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64  ..      "yyyyMMd
0ad0: 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 20 20  dHHmmss",..     
0ae0: 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 22 2c   "yyyyMMddHHmm",
0af0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64  ..      "yyyyMMd
0b00: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 22  dTHHmmssFFFFFFF"
0b10: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
0b20: 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 22 79  M-dd",..      "y
0b30: 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 20 20  yyyMMdd",..     
0b40: 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 20 20   "yy-MM-dd"..   
0b50: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   };....    /// <
0b60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0b70: 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20 64  / The internal d
0b80: 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f  efault format fo
0b90: 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 20 76  r UTC DateTime v
0ba0: 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76 65  alues when conve
0bb0: 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74  rting..    /// t
0bc0: 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  o a string...   
0bd0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0be0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
0bf0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
0c00: 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72  ing _datetimeFor
0c10: 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 74 69  matUtc = _dateti
0c20: 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d 0a 0d  meFormats[5];...
0c30: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0c40: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
0c50: 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 6c 74  internal default
0c60: 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61   format for loca
0c70: 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  l DateTime value
0c80: 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e  s when convertin
0c90: 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 61 20  g..    /// to a 
0ca0: 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f  string...    ///
0cb0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0cc0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0cd0: 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20  readonly string 
0ce0: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 4c  _datetimeFormatL
0cf0: 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 6d 65  ocal = _datetime
0d00: 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a 0d 0a  Formats[19];....
0d10: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0d20: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 55 54  >..    /// An UT
0d30: 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 6e 73  F-8 Encoding ins
0d40: 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 61 6e  tance, so we can
0d50: 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e 67 73   convert strings
0d60: 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 54 46   to and from UTF
0d70: 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  -8..    /// </su
0d80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76  mmary>..    priv
0d90: 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 6f 64  ate static Encod
0da0: 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 77 20  ing _utf8 = new 
0db0: 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 3b 0d  UTF8Encoding();.
0dc0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0dd0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
0de0: 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d 65  default DateTime
0df0: 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 69 73   format for this
0e00: 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20   instance...    
0e10: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0e20: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c      internal SQL
0e30: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 5f  iteDateFormats _
0e40: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 3b 0d  datetimeFormat;.
0e50: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0e60: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
0e70: 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 6d 65  default DateTime
0e80: 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 69 6e  Kind for this in
0e90: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
0ea0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0eb0: 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 54 69   internal DateTi
0ec0: 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 6d 65  meKind _datetime
0ed0: 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c  Kind;..    /// <
0ee0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
0ef0: 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 44 61  / The default Da
0f00: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74  teTime format st
0f10: 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 69 6e  ring for this in
0f20: 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
0f30: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
0f40: 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 6e 67   internal string
0f50: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74   _datetimeFormat
0f60: 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b 0d 0a  String = null;..
0f70: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0f80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 74 69  >..    /// Initi
0f90: 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e 76 65  alizes the conve
0fa0: 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 20 20  rsion class..   
0fb0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
0fc0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
0fd0: 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 20 64  name="fmt">The d
0fe0: 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 6d 65  efault date/time
0ff0: 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 20 66   format to use f
1000: 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65  or this instance
1010: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1020: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b  / <param name="k
1030: 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d  ind">The DateTim
1040: 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70  eKind to use.</p
1050: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
1060: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74 53  param name="fmtS
1070: 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54  tring">The DateT
1080: 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e  ime format strin
1090: 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  g to use.</param
10a0: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
10b0: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 0d 0a  SQLiteConvert(..
10c0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
10d0: 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c 0d 0a  teFormats fmt,..
10e0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
10f0: 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20  Kind kind,..    
1100: 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 53 74      string fmtSt
1110: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d  ring..        ).
1120: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 5f 64  .    {..      _d
1130: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 3d 20  atetimeFormat = 
1140: 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74  fmt;..      _dat
1150: 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 6e 64  etimeKind = kind
1160: 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 74 69  ;..      _dateti
1170: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 3d  meFormatString =
1180: 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 20 20   fmtString;..   
1190: 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f   }....    #regio
11a0: 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 73 69  n UTF-8 Conversi
11b0: 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20  on Functions..  
11c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11d0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
11e0: 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61 20  s a string to a 
11f0: 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 62 79  UTF-8 encoded by
1200: 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 20 74  te array sized t
1210: 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 6c 6c  o include a null
1220: 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 68 61  -terminating cha
1230: 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  racter...    ///
1240: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1250: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
1260: 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e 54 68  ="sourceText">Th
1270: 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f 6e 76  e string to conv
1280: 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f 70 61  ert to UTF-8</pa
1290: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
12a0: 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 61 72  eturns>A byte ar
12b0: 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ray containing t
12c0: 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 74 72  he converted str
12d0: 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 74 72  ing plus an extr
12e0: 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e 67 20  a 0 terminating 
12f0: 62 79 74 65 20 61 74 20 74 68 65 20 65 6e 64 20  byte at the end 
1300: 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c 2f 72  of the array.</r
1310: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
1320: 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 65 5b  lic static byte[
1330: 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e 67 20  ] ToUTF8(string 
1340: 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 20 20  sourceText)..   
1350: 20 7b 0d 0a 20 20 20 20 20 20 42 79 74 65 5b 5d   {..      Byte[]
1360: 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20 20   byteArray;..   
1370: 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75     int nlen = _u
1380: 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75 6e 74  tf8.GetByteCount
1390: 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b 20 31  (sourceText) + 1
13a0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 65 41  ;....      byteA
13b0: 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65 5b  rray = new byte[
13c0: 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c  nlen];..      nl
13d0: 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 42 79  en = _utf8.GetBy
13e0: 74 65 73 28 73 6f 75 72 63 65 54 65 78 74 2c 20  tes(sourceText, 
13f0: 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e 4c 65  0, sourceText.Le
1400: 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61 79 2c  ngth, byteArray,
1410: 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79 74 65   0);..      byte
1420: 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b  Array[nlen] = 0;
1430: 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ....      return
1440: 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20 20   byteArray;..   
1450: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1460: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1470: 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74 65 54   Convert a DateT
1480: 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ime to a UTF-8 e
1490: 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72  ncoded, zero-ter
14a0: 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61 72 72  minated byte arr
14b0: 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ay...    /// </s
14c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
14d0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
14e0: 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 69 6f  /// This functio
14f0: 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e  n is a convenien
1500: 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69  ce function, whi
1510: 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 20 54  ch first calls T
1520: 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 68 65  oString() on the
1530: 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64 20 74   DateTime, and t
1540: 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54 46 38  hen calls ToUTF8
1550: 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20  () with the..   
1560: 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65 73 75   /// string resu
1570: 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  lt...    /// </r
1580: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1590: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
15a0: 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54 68 65  teTimeValue">The
15b0: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e   DateTime to con
15c0: 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  vert.</param>.. 
15d0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
15e0: 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  The UTF-8 encode
15f0: 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64  d string, includ
1600: 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e 61 74  ing a 0 terminat
1610: 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 65 20  ing byte at the 
1620: 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 61 79  end of the array
1630: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
1640: 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 54   public byte[] T
1650: 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65 20 64  oUTF8(DateTime d
1660: 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20  ateTimeValue).. 
1670: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
1680: 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74 72 69  rn ToUTF8(ToStri
1690: 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75 65  ng(dateTimeValue
16a0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
16b0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16c0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
16d0: 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  s a UTF-8 encode
16e0: 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20  d IntPtr of the 
16f0: 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
1700: 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 74 72   into a .NET str
1710: 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ing..    /// </s
1720: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1730: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
1740: 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 65 20  tivestring">The 
1750: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
1760: 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 65 20  emory where the 
1770: 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 73 20  UTF-8 string is 
1780: 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d  encoded</param>.
1790: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
17a0: 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69  name="nativestri
17b0: 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65  nglen">The numbe
17c0: 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 64 65  r of bytes to de
17d0: 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  code</param>..  
17e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
17f0: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
1800: 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 74 65  ng the translate
1810: 64 20 63 68 61 72 61 63 74 65 72 28 73 29 3c 2f  d character(s)</
1820: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
1830: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
1840: 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49 6e 74  ing ToString(Int
1850: 50 74 72 20 6e 61 74 69 76 65 73 74 72 69 6e 67  Ptr nativestring
1860: 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74 72 69  , int nativestri
1870: 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20  nglen)..    {.. 
1880: 20 20 20 20 20 72 65 74 75 72 6e 20 55 54 46 38       return UTF8
1890: 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76 65 73  ToString(natives
18a0: 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73 74 72  tring, nativestr
18b0: 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d  inglen);..    }.
18c0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
18d0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
18e0: 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 20 65  nverts a UTF-8 e
18f0: 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66  ncoded IntPtr of
1900: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c   the specified l
1910: 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45  ength into a .NE
1920: 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f  T string..    //
1930: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
1940: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
1950: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 22  e="nativestring"
1960: 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  >The pointer to 
1970: 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 72 65  the memory where
1980: 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 69 6e   the UTF-8 strin
1990: 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61  g is encoded</pa
19a0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
19b0: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
19c0: 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20  estringlen">The 
19d0: 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
19e0: 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d  to decode</param
19f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
1a00: 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e  rns>A string con
1a10: 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61 6e  taining the tran
1a20: 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 65 72  slated character
1a30: 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  (s)</returns>.. 
1a40: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1a50: 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f 53 74   string UTF8ToSt
1a60: 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61 74 69  ring(IntPtr nati
1a70: 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61  vestring, int na
1a80: 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a  tivestringlen)..
1a90: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
1aa0: 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20 3d 3d  (nativestring ==
1ab0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20   IntPtr.Zero || 
1ac0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20  nativestringlen 
1ad0: 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53 74 72  == 0) return Str
1ae0: 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20  ing.Empty;..    
1af0: 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72 69    if (nativestri
1b00: 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20  nglen < 0)..    
1b10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 61 74    {..        nat
1b20: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30  ivestringlen = 0
1b30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69  ;....        whi
1b40: 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  le (Marshal.Read
1b50: 42 79 74 65 28 6e 61 74 69 76 65 73 74 72 69 6e  Byte(nativestrin
1b60: 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  g, nativestringl
1b70: 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20 20 20  en) != 0)..     
1b80: 20 20 20 20 20 6e 61 74 69 76 65 73 74 72 69 6e       nativestrin
1b90: 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20  glen++;....     
1ba0: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
1bb0: 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74  inglen == 0) ret
1bc0: 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  urn String.Empty
1bd0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
1be0: 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 41      byte[] byteA
1bf0: 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65 5b  rray = new byte[
1c00: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d  nativestringlen]
1c10: 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72 73 68  ;....      Marsh
1c20: 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65 73 74  al.Copy(nativest
1c30: 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61 79 2c  ring, byteArray,
1c40: 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67   0, nativestring
1c50: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  len);....      r
1c60: 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65 74 53  eturn _utf8.GetS
1c70: 74 72 69 6e 67 28 62 79 74 65 41 72 72 61 79 2c  tring(byteArray,
1c80: 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67   0, nativestring
1c90: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  len);..    }....
1ca0: 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e  ..    #endregion
1cb0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
1cc0: 44 61 74 65 54 69 6d 65 20 43 6f 6e 76 65 72 73  DateTime Convers
1cd0: 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20  ion Functions.. 
1ce0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
1cf0: 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72  ..    /// Conver
1d00: 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f  ts a string into
1d10: 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 73 69   a DateTime, usi
1d20: 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d 65 46  ng the DateTimeF
1d30: 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d 65 4b  ormat, DateTimeK
1d40: 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 61 6e  ind,..    /// an
1d50: 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  d DateTimeFormat
1d60: 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 65 64  String specified
1d70: 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74   for the connect
1d80: 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 73 20  ion when it was 
1d90: 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f  opened...    ///
1da0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1db0: 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a   /// <remarks>..
1dc0: 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 61 62      /// Acceptab
1dd0: 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74 65 54  le ISO8601 DateT
1de0: 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72 65 3a  ime formats are:
1df0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20  ..    /// <list 
1e00: 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a  type="bullet">..
1e10: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
1e20: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
1e30: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ssK</description
1e40: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
1e50: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
1e60: 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64 65 73  tion>THHmmK</des
1e70: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
1e80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
1e90: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
1ea0: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f  mm:ss.FFFFFFFK</
1eb0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
1ec0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
1ed0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
1ee0: 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72  HH:mm:ssK</descr
1ef0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
1f00: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
1f10: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
1f20: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
1f30: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
1f40: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
1f50: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
1f60: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
1f70: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
1f80: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
1f90: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
1fa0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d  >yyyy-MM-dd HH:m
1fb0: 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  m:ssK</descripti
1fc0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
1fd0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
1fe0: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
1ff0: 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69  d HH:mmK</descri
2000: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2010: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2020: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
2030: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46  M-ddTHH:mm:ss.FF
2040: 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74  FFFFFK</descript
2050: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2060: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2070: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
2080: 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  ddTHH:mmK</descr
2090: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
20a0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
20b0: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
20c0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 4b 3c  MM-ddTHH:mm:ssK<
20d0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
20e0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
20f0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2100: 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73 4b  >yyyyMMddHHmmssK
2110: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2120: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2130: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2140: 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 3c  n>yyyyMMddHHmmK<
2150: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2160: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2170: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2180: 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d 73 73  >yyyyMMddTHHmmss
2190: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69  FFFFFFFK</descri
21a0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
21b0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
21c0: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 73  scription>THHmms
21d0: 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  s</description><
21e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
21f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
2200: 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63 72 69  on>THHmm</descri
2210: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2220: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2230: 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a  scription>HH:mm:
2240: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63  ss.FFFFFFF</desc
2250: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2260: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2270: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
2280: 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  m:ss</descriptio
2290: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
22a0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
22b0: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64 65 73  ption>HH:mm</des
22c0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
22d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
22e0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
22f0: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
2300: 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72 69  .FFFFFFF</descri
2310: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
2320: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
2330: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d  scription>yyyy-M
2340: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c 2f 64  M-dd HH:mm:ss</d
2350: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
2360: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
2370: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
2380: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3c  yyy-MM-dd HH:mm<
2390: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
23a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
23b0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
23c0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
23d0: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65  m:ss.FFFFFFF</de
23e0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
23f0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2400: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2410: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3c 2f  yy-MM-ddTHH:mm</
2420: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2430: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2440: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2450: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
2460: 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :ss</description
2470: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
2480: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
2490: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
24a0: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  mss</description
24b0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
24c0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
24d0: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d  tion>yyyyMMddHHm
24e0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
24f0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
2500: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
2510: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d  on>yyyyMMddTHHmm
2520: 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72  ssFFFFFFF</descr
2530: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2540: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2550: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
2560: 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 74 69  MM-dd</descripti
2570: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2580: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2590: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 3c  iption>yyyyMMdd<
25a0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
25b0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
25c0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
25d0: 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72  >yy-MM-dd</descr
25e0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
25f0: 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e 0d      /// </list>.
2600: 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20  .    /// If the 
2610: 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20 62 65  string cannot be
2620: 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e 65 20   matched to one 
2630: 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66 6f 72  of the above for
2640: 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20 20 2f  mats -OR-..    /
2650: 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d 65 46  // the DateTimeF
2660: 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66 20 6f  ormatString if o
2670: 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65 64 2c  ne was provided,
2680: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69   an exception wi
2690: 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20 74  ll..    /// be t
26a0: 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f 2f 20  hrown...    /// 
26b0: 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20  </remarks>..    
26c0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
26d0: 22 64 61 74 65 54 65 78 74 22 3e 54 68 65 20 73  "dateText">The s
26e0: 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
26f0: 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67 20 69   either a long i
2700: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66  nteger number of
2710: 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20   100-nanosecond 
2720: 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20 20 20  units since..   
2730: 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74 65   /// System.Date
2740: 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20 61  Time.MinValue, a
2750: 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62   Julian day doub
2760: 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e  le, an integer n
2770: 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73  umber of seconds
2780: 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20   since the Unix 
2790: 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20 2f 2f  epoch, a..    //
27a0: 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70 65  / culture-indepe
27b0: 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64 20  ndent formatted 
27c0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74  date and time st
27d0: 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65  ring, a formatte
27e0: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20  d date and time 
27f0: 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75  string in the cu
2800: 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20 63  rrent..    /// c
2810: 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49 53  ulture, or an IS
2820: 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73 74 72  O8601-format str
2830: 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ing.</param>..  
2840: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
2850: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 3c   DateTime value<
2860: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
2870: 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65 20 54  ublic DateTime T
2880: 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69 6e 67  oDateTime(string
2890: 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20 20 20   dateText)..    
28a0: 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20  {..      return 
28b0: 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74 65 54  ToDateTime(dateT
28c0: 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ext, _datetimeFo
28d0: 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d 65 4b  rmat, _datetimeK
28e0: 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 46 6f  ind, _datetimeFo
28f0: 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a 20 20  rmatString);..  
2900: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
2910: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
2920: 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 74 72  / Converts a str
2930: 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 65 54  ing into a DateT
2940: 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 20 73  ime, using the s
2950: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
2960: 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 2f 2f  eFormat,..    //
2970: 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 61  / DateTimeKind a
2980: 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  nd DateTimeForma
2990: 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f  tString...    //
29a0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
29b0: 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d    /// <remarks>.
29c0: 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 61  .    /// Accepta
29d0: 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74 65  ble ISO8601 Date
29e0: 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72 65  Time formats are
29f0: 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74  :..    /// <list
2a00: 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d   type="bullet">.
2a10: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2a20: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d  description>THHm
2a30: 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  mssK</descriptio
2a40: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
2a50: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
2a60: 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64 65  ption>THHmmK</de
2a70: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2a80: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2a90: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48  ><description>HH
2aa0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c  :mm:ss.FFFFFFFK<
2ab0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
2ac0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
2ad0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
2ae0: 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63  >HH:mm:ssK</desc
2af0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2b00: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2b10: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
2b20: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mK</description>
2b30: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2b40: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2b50: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
2b60: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b  H:mm:ss.FFFFFFFK
2b70: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2b80: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2b90: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2ba0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
2bb0: 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  mm:ssK</descript
2bc0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
2bd0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
2be0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
2bf0: 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72  dd HH:mmK</descr
2c00: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2c10: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2c20: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
2c30: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 46  MM-ddTHH:mm:ss.F
2c40: 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70  FFFFFFK</descrip
2c50: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
2c60: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
2c70: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
2c80: 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63  -ddTHH:mmK</desc
2c90: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
2ca0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
2cb0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
2cc0: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 4b  -MM-ddTHH:mm:ssK
2cd0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2ce0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2cf0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2d00: 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 73  n>yyyyMMddHHmmss
2d10: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
2d20: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
2d30: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
2d40: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b  on>yyyyMMddHHmmK
2d50: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2d60: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2d70: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2d80: 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d 73  n>yyyyMMddTHHmms
2d90: 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72  sFFFFFFFK</descr
2da0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2db0: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2dc0: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
2dd0: 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ss</description>
2de0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
2df0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
2e00: 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63 72  ion>THHmm</descr
2e10: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2e20: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2e30: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
2e40: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73  :ss.FFFFFFF</des
2e50: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
2e60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
2e70: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a  <description>HH:
2e80: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69  mm:ss</descripti
2e90: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
2ea0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
2eb0: 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64 65  iption>HH:mm</de
2ec0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
2ed0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
2ee0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
2ef0: 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73  yy-MM-dd HH:mm:s
2f00: 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63 72  s.FFFFFFF</descr
2f10: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
2f20: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
2f30: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d  escription>yyyy-
2f40: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c 2f  MM-dd HH:mm:ss</
2f50: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
2f60: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
2f70: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
2f80: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
2f90: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
2fa0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
2fb0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
2fc0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a  n>yyyy-MM-ddTHH:
2fd0: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
2fe0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
2ff0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
3000: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
3010: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3c  yyy-MM-ddTHH:mm<
3020: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
3030: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
3040: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
3050: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
3060: 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  m:ss</descriptio
3070: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
3080: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
3090: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48  ption>yyyyMMddHH
30a0: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f  mmss</descriptio
30b0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
30c0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
30d0: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48  ption>yyyyMMddHH
30e0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  mm</description>
30f0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
3100: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
3110: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d  ion>yyyyMMddTHHm
3120: 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73 63  mssFFFFFFF</desc
3130: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
3140: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
3150: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
3160: 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 74  -MM-dd</descript
3170: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
3180: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
3190: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
31a0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
31b0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
31c0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
31d0: 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63  n>yy-MM-dd</desc
31e0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
31f0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 3e  .    /// </list>
3200: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65  ..    /// If the
3210: 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20 62   string cannot b
3220: 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e 65  e matched to one
3230: 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66 6f   of the above fo
3240: 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20 20  rmats -OR-..    
3250: 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d 65  /// the DateTime
3260: 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66 20  FormatString if 
3270: 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65 64  one was provided
3280: 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77  , an exception w
3290: 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 20  ill..    /// be 
32a0: 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f 2f  thrown...    ///
32b0: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
32c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
32d0: 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65 20  ="dateText">The 
32e0: 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e  string containin
32f0: 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67 20  g either a long 
3300: 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 6f  integer number o
3310: 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64  f 100-nanosecond
3320: 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20 20   units since..  
3330: 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 74    /// System.Dat
3340: 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c 20  eTime.MinValue, 
3350: 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f 75  a Julian day dou
3360: 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 20  ble, an integer 
3370: 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e 64  number of second
3380: 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78  s since the Unix
3390: 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20 2f   epoch, a..    /
33a0: 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70  // culture-indep
33b0: 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 64  endent formatted
33c0: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73   date and time s
33d0: 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74  tring, a formatt
33e0: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  ed date and time
33f0: 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 63   string in the c
3400: 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f 20  urrent..    /// 
3410: 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 49  culture, or an I
3420: 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73 74  SO8601-format st
3430: 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ring.</param>.. 
3440: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
3450: 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68 65 20  me="format">The 
3460: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
3470: 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  s to use.</param
3480: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
3490: 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68  m name="kind">Th
34a0: 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74  e DateTimeKind t
34b0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
34c0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
34d0: 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e  ame="formatStrin
34e0: 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  g">The DateTime 
34f0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f  format string to
3500: 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   use.</param>.. 
3510: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
3520: 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65  A DateTime value
3530: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
3540: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 44 61  public static Da
3550: 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d  teTime ToDateTim
3560: 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  e(..        stri
3570: 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a 20 20  ng dateText,..  
3580: 20 20 20 20 20 20 53 51 4c 69 74 65 44 61 74 65        SQLiteDate
3590: 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 2c 0d  Formats format,.
35a0: 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d  .        DateTim
35b0: 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20  eKind kind,..   
35c0: 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d       string form
35d0: 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  atString..      
35e0: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
35f0: 20 20 20 20 73 77 69 74 63 68 20 28 66 6f 72 6d      switch (form
3600: 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  at)..        {..
3610: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
3620: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
3630: 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 20 20  ts.Ticks:..     
3640: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3660: 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54    return ToDateT
3670: 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e  ime(Convert.ToIn
3680: 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
3690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
36a0: 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49  teText, CultureI
36b0: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
36c0: 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20  ture), kind);.. 
36d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
36e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
36f0: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
3700: 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d  mats.JulianDay:.
3710: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3720: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3730: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
3740: 6f 44 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72  oDateTime(Conver
3750: 74 2e 54 6f 44 6f 75 62 6c 65 28 0d 0a 20 20 20  t.ToDouble(..   
3760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3770: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 43       dateText, C
3780: 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72  ultureInfo.Invar
3790: 69 61 6e 74 43 75 6c 74 75 72 65 29 2c 20 6b 69  iantCulture), ki
37a0: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
37b0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37c0: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
37d0: 44 61 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69 78  DateFormats.Unix
37e0: 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20 20  Epoch:..        
37f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3810: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65  eturn ToDateTime
3820: 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32  (Convert.ToInt32
3830: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3840: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54             dateT
3850: 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
3860: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
3870: 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20  e), kind);..    
3880: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
3890: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
38a0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
38b0: 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  s.InvariantCultu
38c0: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
38d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
38e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
38f0: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
3900: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3920: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
3930: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
3940: 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d  ime.ParseExact(.
3950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
3970: 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72  eText, formatStr
3980: 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
3990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39a0: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
39b0: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e  Info.InvariantIn
39c0: 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fo,..           
39d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39e0: 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d   kind == DateTim
39f0: 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20  eKind.Utc ?..   
3a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74               Dat
3a20: 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75  eTimeStyles.Adju
3a30: 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d  stToUniversal :.
3a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a60: 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e   DateTimeStyles.
3a70: 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  None),..        
3a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a90: 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20      kind);..    
3aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ab0: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
3ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3ad0: 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70  turn DateTime.Sp
3ae0: 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69  ecifyKind(DateTi
3af0: 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20  me.Parse(..     
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b10: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
3b20: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49   DateTimeFormatI
3b30: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66  nfo.InvariantInf
3b40: 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o,..            
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65  kind == DateTime
3b70: 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20  Kind.Utc ?..    
3b80: 20 20 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 44 61 74 65              Date
3ba0: 54 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73  TimeStyles.Adjus
3bb0: 74 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a  tToUniversal :..
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 20 20 20 20 20 20                  
3be0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e  DateTimeStyles.N
3bf0: 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  one),..         
3c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c10: 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20     kind);..     
3c20: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3c30: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
3c40: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
3c50: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a  .CurrentCulture:
3c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3c80: 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f 72           if (for
3c90: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
3ca0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
3cb0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3cc0: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
3cd0: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
3ce0: 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20  .ParseExact(..  
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d00: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
3d10: 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67  xt, formatString
3d20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
3d40: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
3d50: 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a  o.CurrentInfo,..
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d70: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
3d80: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
3d90: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
3da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3db0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
3dc0: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
3dd0: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
3de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
3e00: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
3e10: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
3e30: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
3e40: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
3e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3e60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
3e70: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
3e80: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
3e90: 72 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  rse(..          
3ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3eb0: 20 20 64 61 74 65 54 65 78 74 2c 20 44 61 74 65    dateText, Date
3ec0: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43  TimeFormatInfo.C
3ed0: 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20  urrentInfo,..   
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ef0: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d           kind ==
3f00: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74   DateTimeKind.Ut
3f10: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  c ?..           
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f30: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79       DateTimeSty
3f40: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76  les.AdjustToUniv
3f50: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20  ersal :..       
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f70: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
3f80: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a  eStyles.None),..
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 20 20 6b 69 6e 64              kind
3fb0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
3fc0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3fd0: 20 20 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 49     default: /* I
3fe0: 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20 20 20 20  SO-8601 */..    
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4010: 20 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72     if (formatStr
4020: 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ing != null)..  
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4040: 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74        return Dat
4050: 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e  eTime.SpecifyKin
4060: 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65  d(DateTime.Parse
4070: 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20  Exact(..        
4080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4090: 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f      dateText, fo
40a0: 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20  rmatString,..   
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
40c0: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
40d0: 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61  eFormatInfo.Inva
40e0: 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20  riantInfo,..    
40f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4100: 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20          kind == 
4110: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63  DateTimeKind.Utc
4120: 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
4130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4140: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
4150: 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65  es.AdjustToUnive
4160: 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20  rsal :..        
4170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4180: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
4190: 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20  Styles.None),.. 
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29             kind)
41c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
41d0: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
41e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41f0: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
4200: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
4210: 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45  (DateTime.ParseE
4220: 78 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20  xact(..         
4230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4240: 20 20 20 64 61 74 65 54 65 78 74 2c 20 5f 64 61     dateText, _da
4250: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a  tetimeFormats,..
4260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4270: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
4280: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
4290: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
42a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42b0: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
42c0: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
42d0: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
42e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
42f0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
4300: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
4310: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
4320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4330: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
4340: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
4350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
4370: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
4380: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
4390: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
43a0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
43b0: 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73      /// Converts
43c0: 20 61 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c   a julianday val
43d0: 75 65 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69  ue into a DateTi
43e0: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  me..    /// </su
43f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
4400: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c  <param name="jul
4410: 69 61 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75  ianDay">The valu
4420: 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61  e to convert</pa
4430: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
4440: 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61  eturns>A .NET Da
4450: 74 65 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e  teTime</returns>
4460: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 44 61 74  ..    public Dat
4470: 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65  eTime ToDateTime
4480: 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61  (double julianDa
4490: 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  y)..    {..     
44a0: 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69   return ToDateTi
44b0: 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c 20 5f 64  me(julianDay, _d
44c0: 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b 0d 0a 20  atetimeKind);.. 
44d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
44e0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
44f0: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75  // Converts a ju
4500: 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e  lianday value in
4510: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20  to a DateTime.. 
4520: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
4530: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
4540: 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61  m name="julianDa
4550: 79 22 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20  y">The value to 
4560: 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d  convert</param>.
4570: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4580: 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20  name="kind">The 
4590: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20  DateTimeKind to 
45a0: 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  use.</param>..  
45b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
45c0: 20 2e 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f   .NET DateTime</
45d0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
45e0: 62 6c 69 63 20 73 74 61 74 69 63 20 44 61 74 65  blic static Date
45f0: 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28  Time ToDateTime(
4600: 64 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79  double julianDay
4610: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b  , DateTimeKind k
4620: 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  ind)..    {..   
4630: 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65       return Date
4640: 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64  Time.SpecifyKind
4650: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  (..            D
4660: 61 74 65 54 69 6d 65 2e 46 72 6f 6d 4f 41 44 61  ateTime.FromOADa
4670: 74 65 28 6a 75 6c 69 61 6e 44 61 79 20 2d 20 4f  te(julianDay - O
4680: 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f 63  leAutomationEpoc
4690: 68 41 73 4a 75 6c 69 61 6e 44 61 79 29 2c 20 6b  hAsJulianDay), k
46a0: 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  ind);..    }....
46b0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
46c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
46d0: 72 74 73 20 74 68 65 20 73 70 65 63 69 66 69 65  rts the specifie
46e0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f  d number of seco
46f0: 6e 64 73 20 66 72 6f 6d 20 74 68 65 20 55 6e 69  nds from the Uni
4700: 78 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  x epoch into a..
4710: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
4720: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
4730: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
4740: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
4750: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
4760: 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20 20 20 20  "seconds">..    
4770: 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  /// The number o
4780: 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e 64 73 20  f whole seconds 
4790: 73 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65  since the Unix e
47a0: 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  poch...    /// <
47b0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
47c0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69   <param name="ki
47d0: 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 45 69  nd">..    /// Ei
47e0: 74 68 65 72 20 55 74 63 20 6f 72 20 4c 6f 63 61  ther Utc or Loca
47f0: 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f  l time...    ///
4800: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
4810: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20  // <returns>..  
4820: 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 3c 73    /// The new <s
4830: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
4840: 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  e" /> value...  
4850: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
4860: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
4870: 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20 54  tatic DateTime T
4880: 6f 44 61 74 65 54 69 6d 65 28 69 6e 74 20 73 65  oDateTime(int se
4890: 63 6f 6e 64 73 2c 20 44 61 74 65 54 69 6d 65 4b  conds, DateTimeK
48a0: 69 6e 64 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b  ind kind)..    {
48b0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
48c0: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
48d0: 79 4b 69 6e 64 28 55 6e 69 78 45 70 6f 63 68 2e  yKind(UnixEpoch.
48e0: 41 64 64 53 65 63 6f 6e 64 73 28 73 65 63 6f 6e  AddSeconds(secon
48f0: 64 73 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20  ds), kind);..   
4900: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
4910: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
4920: 20 43 6f 6e 76 65 72 74 73 20 74 68 65 20 73 70   Converts the sp
4930: 65 63 69 66 69 65 64 20 6e 75 6d 62 65 72 20 6f  ecified number o
4940: 66 20 74 69 63 6b 73 20 73 69 6e 63 65 20 74 68  f ticks since th
4950: 65 20 65 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a  e epoch into a..
4960: 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65      /// <see cre
4970: 66 3d 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20  f="DateTime" /> 
4980: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
4990: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
49a0: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
49b0: 22 74 69 63 6b 73 22 3e 0d 0a 20 20 20 20 2f 2f  "ticks">..    //
49c0: 2f 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  / The number of 
49d0: 77 68 6f 6c 65 20 74 69 63 6b 73 20 73 69 6e 63  whole ticks sinc
49e0: 65 20 74 68 65 20 65 70 6f 63 68 2e 0d 0a 20 20  e the epoch...  
49f0: 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a    /// </param>..
4a00: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
4a10: 61 6d 65 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20  ame="kind">..   
4a20: 20 2f 2f 2f 20 45 69 74 68 65 72 20 55 74 63 20   /// Either Utc 
4a30: 6f 72 20 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a  or Local time...
4a40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
4a50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
4a60: 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ns>..    /// The
4a70: 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d 22   new <see cref="
4a80: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
4a90: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ue...    /// </r
4aa0: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
4ab0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 44 61 74  ernal static Dat
4ac0: 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65  eTime ToDateTime
4ad0: 28 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44 61 74  (long ticks, Dat
4ae0: 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 29 0d  eTimeKind kind).
4af0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
4b00: 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54  return new DateT
4b10: 69 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e 64 29  ime(ticks, kind)
4b20: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
4b30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4b40: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
4b50: 61 20 44 61 74 65 54 69 6d 65 20 73 74 72 75 63  a DateTime struc
4b60: 74 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44 61 79  t to a JulianDay
4b70: 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f   double..    ///
4b80: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
4b90: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
4ba0: 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44 61 74  ="value">The Dat
4bb0: 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 72 74  eTime to convert
4bc0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
4bd0: 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 4a  / <returns>The J
4be0: 75 6c 69 61 6e 44 61 79 20 76 61 6c 75 65 20 74  ulianDay value t
4bf0: 68 65 20 44 61 74 65 74 69 6d 65 20 72 65 70 72  he Datetime repr
4c00: 65 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e 73 3e  esents</returns>
4c10: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
4c20: 74 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a 75 6c  tic double ToJul
4c30: 69 61 6e 44 61 79 28 44 61 74 65 54 69 6d 65 20  ianDay(DateTime 
4c40: 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d 0a 20  value)..    {.. 
4c50: 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
4c60: 65 2e 54 6f 4f 41 44 61 74 65 28 29 20 2b 20 4f  e.ToOADate() + O
4c70: 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f 63  leAutomationEpoc
4c80: 68 41 73 4a 75 6c 69 61 6e 44 61 79 3b 0d 0a 20  hAsJulianDay;.. 
4c90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
4ca0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
4cb0: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 44 61  // Converts a Da
4cc0: 74 65 54 69 6d 65 20 73 74 72 75 63 74 20 74 6f  teTime struct to
4cd0: 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65   the whole numbe
4ce0: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
4cf0: 63 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  ce the..    /// 
4d00: 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20  Unix epoch...   
4d10: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
4d20: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4d30: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65  name="value">The
4d40: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e   DateTime to con
4d50: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
4d60: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
4d70: 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20  he whole number 
4d80: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
4d90: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 3c   the Unix epoch<
4da0: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
4db0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e  ublic static lon
4dc0: 67 20 54 6f 55 6e 69 78 45 70 6f 63 68 28 44 61  g ToUnixEpoch(Da
4dd0: 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20  teTime value).. 
4de0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
4df0: 74 75 72 6e 20 28 76 61 6c 75 65 2e 53 75 62 74  turn (value.Subt
4e00: 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29 2e  ract(UnixEpoch).
4e10: 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e  Ticks / TimeSpan
4e20: 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64 29  .TicksPerSecond)
4e30: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
4e40: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
4e50: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
4e60: 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d  he DateTime form
4e70: 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65  at string to use
4e80: 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
4e90: 65 64 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  ed DateTimeKind.
4ea0: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 3c 70 61  ..    /// If <pa
4eb0: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66 6f 72  ramref name="for
4ec0: 6d 61 74 53 74 72 69 6e 67 22 20 2f 3e 20 69 73  matString" /> is
4ed0: 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74 20 77 69   not null, it wi
4ee0: 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 76  ll be returned v
4ef0: 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20 2f 2f  erbatim...    //
4f00: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
4f10: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
4f20: 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74  e="kind">The Dat
4f30: 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65  eTimeKind to use
4f40: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
4f50: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
4f60: 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e 54 68  formatString">Th
4f70: 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  e DateTime forma
4f80: 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e  t string to use.
4f90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
4fa0: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
4fb0: 20 2f 2f 2f 20 54 68 65 20 44 61 74 65 54 69 6d   /// The DateTim
4fc0: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
4fd0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
4fe0: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
4ff0: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
5000: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
5010: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
5020: 74 72 69 6e 67 20 47 65 74 44 61 74 65 54 69 6d  tring GetDateTim
5030: 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 20  eKindFormat(..  
5040: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69        DateTimeKi
5050: 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20  nd kind,..      
5060: 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 53    string formatS
5070: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
5080: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
5090: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e   if (formatStrin
50a0: 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  g != null) retur
50b0: 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 3b 0d  n formatString;.
50c0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
50d0: 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  (kind == DateTim
50e0: 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20 5f 64 61  eKind.Utc) ? _da
50f0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 55 74 63 20  tetimeFormatUtc 
5100: 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  : _datetimeForma
5110: 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d 0a  tLocal;..    }..
5120: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
5130: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
5140: 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69  verts a string i
5150: 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20  nto a DateTime, 
5160: 75 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69  using the DateTi
5170: 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69  meFormat, DateTi
5180: 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f  meKind,..    ///
5190: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
51a0: 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66  matString specif
51b0: 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ied for the conn
51c0: 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77  ection when it w
51d0: 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20  as opened...    
51e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
51f0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
5200: 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e  ame="dateValue">
5210: 54 68 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c  The DateTime val
5220: 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70  ue to convert</p
5230: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
5240: 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61  returns>Either a
5250: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
5260: 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65  ng the long inte
5270: 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30  ger number of 10
5280: 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69  0-nanosecond uni
5290: 74 73 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e  ts since System.
52a0: 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75  DateTime.MinValu
52b0: 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75  e, a..    /// Ju
52c0: 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c  lian day double,
52d0: 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62   an integer numb
52e0: 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
52f0: 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f  nce the Unix epo
5300: 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e  ch, a culture-in
5310: 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74  dependent format
5320: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
5330: 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  e..    /// strin
5340: 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64  g, a formatted d
5350: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72  ate and time str
5360: 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 65  ing in the curre
5370: 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61  nt culture, or a
5380: 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74  n ISO8601-format
5390: 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e   date/time strin
53a0: 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  g.</returns>..  
53b0: 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
53c0: 54 6f 53 74 72 69 6e 67 28 44 61 74 65 54 69 6d  ToString(DateTim
53d0: 65 20 64 61 74 65 56 61 6c 75 65 29 0d 0a 20 20  e dateValue)..  
53e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69    {..        swi
53f0: 74 63 68 20 28 5f 64 61 74 65 74 69 6d 65 46 6f  tch (_datetimeFo
5400: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b  rmat)..        {
5410: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
5420: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
5430: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20  mats.Ticks:..   
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5450: 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 69  urn dateValue.Ti
5460: 63 6b 73 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c  cks.ToString(Cul
5470: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
5480: 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20  ntCulture);..   
5490: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51           case SQ
54a0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e  LiteDateFormats.
54b0: 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20  JulianDay:..    
54c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
54d0: 72 6e 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 64  rn ToJulianDay(d
54e0: 61 74 65 56 61 6c 75 65 29 2e 54 6f 53 74 72 69  ateValue).ToStri
54f0: 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49  ng(CultureInfo.I
5500: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29  nvariantCulture)
5510: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
5520: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
5530: 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a  rmats.UnixEpoch:
5540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5550: 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29    return ((long)
5560: 28 64 61 74 65 56 61 6c 75 65 2e 53 75 62 74 72  (dateValue.Subtr
5570: 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29 2e 54  act(UnixEpoch).T
5580: 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e 2e  icks / TimeSpan.
5590: 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 29  TicksPerSecond))
55a0: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
55b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
55c0: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
55d0: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
55e0: 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e:..            
55f0: 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56      return dateV
5600: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 5f  alue.ToString((_
5610: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74  datetimeFormatSt
5620: 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  ring != null) ?.
5630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5640: 20 20 20 20 20 5f 64 61 74 65 74 69 6d 65 46 6f       _datetimeFo
5650: 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46 75 6c  rmatString : Ful
5660: 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 65  lFormat, Culture
5670: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
5680: 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  lture);..       
5690: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
56a0: 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75 72 72  DateFormats.Curr
56b0: 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20  entCulture:..   
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
56d0: 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 6f  urn dateValue.To
56e0: 53 74 72 69 6e 67 28 28 5f 64 61 74 65 74 69 6d  String((_datetim
56f0: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d  eFormatString !=
5700: 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 64                _d
5720: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72  atetimeFormatStr
5730: 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 74  ing : FullFormat
5740: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75  , CultureInfo.Cu
5750: 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a  rrentCulture);..
5760: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
5770: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
5780: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 61        return (da
5790: 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d 20  teValue.Kind == 
57a0: 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e 73  DateTimeKind.Uns
57b0: 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20 20 20  pecified) ?..   
57c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57d0: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66   DateTime.Specif
57e0: 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75 65 2c  yKind(dateValue,
57f0: 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29 2e   _datetimeKind).
5800: 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20  ToString(..     
5810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5820: 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69     GetDateTimeKi
5830: 6e 64 46 6f 72 6d 61 74 28 5f 64 61 74 65 74 69  ndFormat(_dateti
5840: 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d  meKind, _datetim
5850: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c 0d  eFormatString),.
5860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5870: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
5880: 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61  tureInfo.Invaria
5890: 6e 74 43 75 6c 74 75 72 65 29 20 3a 20 64 61 74  ntCulture) : dat
58a0: 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28  eValue.ToString(
58b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
58c0: 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61 74            GetDat
58d0: 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28  eTimeKindFormat(
58e0: 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c 20  dateValue.Kind, 
58f0: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53  _datetimeFormatS
5900: 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20  tring),..       
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5920: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
5930: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
5940: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
5950: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
5960: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
5970: 2f 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66 75 6e  /// Internal fun
5980: 63 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65 72 74  ction to convert
5990: 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64   a UTF-8 encoded
59a0: 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73   IntPtr of the s
59b0: 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20  pecified length 
59c0: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a  to a DateTime...
59d0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
59e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  y>..    /// <rem
59f0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
5a00: 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65 6e 69  his is a conveni
5a10: 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77  ence function, w
5a20: 68 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73  hich first calls
5a30: 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74   ToString() on t
5a40: 68 65 20 49 6e 74 50 74 72 20 74 6f 20 63 6f 6e  he IntPtr to con
5a50: 76 65 72 74 20 69 74 20 74 6f 20 61 20 73 74 72  vert it to a str
5a60: 69 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c 73 0d  ing, then calls.
5a70: 0a 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74 65 54  .    /// ToDateT
5a80: 69 6d 65 28 29 20 6f 6e 20 74 68 65 20 73 74 72  ime() on the str
5a90: 69 6e 67 20 74 6f 20 72 65 74 75 72 6e 20 61 20  ing to return a 
5aa0: 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f  DateTime...    /
5ab0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20  // </remarks>.. 
5ac0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
5ad0: 6d 65 3d 22 70 74 72 22 3e 41 20 70 6f 69 6e 74  me="ptr">A point
5ae0: 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20  er to the UTF-8 
5af0: 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 3c 2f  encoded string</
5b00: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5b10: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e  <param name="len
5b20: 22 3e 54 68 65 20 6c 65 6e 67 74 68 20 69 6e 20  ">The length in 
5b30: 62 79 74 65 73 20 6f 66 20 74 68 65 20 73 74 72  bytes of the str
5b40: 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  ing</param>..   
5b50: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
5b60: 65 20 70 61 72 73 65 64 20 44 61 74 65 54 69 6d  e parsed DateTim
5b70: 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73  e value</returns
5b80: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
5b90: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
5ba0: 69 6d 65 28 49 6e 74 50 74 72 20 70 74 72 2c 20  ime(IntPtr ptr, 
5bb0: 69 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d  int len)..    {.
5bc0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f  .      return To
5bd0: 44 61 74 65 54 69 6d 65 28 54 6f 53 74 72 69 6e  DateTime(ToStrin
5be0: 67 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d 0a 20  g(ptr, len));.. 
5bf0: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
5c00: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  gion....    /// 
5c10: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
5c20: 2f 2f 20 53 6d 61 72 74 20 6d 65 74 68 6f 64 20  // Smart method 
5c30: 6f 66 20 73 70 6c 69 74 74 69 6e 67 20 61 20 73  of splitting a s
5c40: 74 72 69 6e 67 2e 20 20 53 6b 69 70 73 20 71 75  tring.  Skips qu
5c50: 6f 74 65 64 20 65 6c 65 6d 65 6e 74 73 2c 20 72  oted elements, r
5c60: 65 6d 6f 76 65 73 20 74 68 65 20 71 75 6f 74 65  emoves the quote
5c70: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  s...    /// </su
5c80: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
5c90: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
5ca0: 2f 2f 20 54 68 69 73 20 73 70 6c 69 74 20 66 75  // This split fu
5cb0: 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d  nction works som
5cc0: 65 77 68 61 74 20 6c 69 6b 65 20 74 68 65 20 53  ewhat like the S
5cd0: 74 72 69 6e 67 2e 53 70 6c 69 74 28 29 20 66 75  tring.Split() fu
5ce0: 6e 63 74 69 6f 6e 20 69 6e 20 74 68 61 74 20 69  nction in that i
5cf0: 74 20 62 72 65 61 6b 73 20 61 70 61 72 74 20 61  t breaks apart a
5d00: 20 73 74 72 69 6e 67 20 69 6e 74 6f 0d 0a 20 20   string into..  
5d10: 20 20 2f 2f 2f 20 70 69 65 63 65 73 20 61 6e 64    /// pieces and
5d20: 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 69 65   returns the pie
5d30: 63 65 73 20 61 73 20 61 6e 20 61 72 72 61 79 2e  ces as an array.
5d40: 20 20 54 68 65 20 70 72 69 6d 61 72 79 20 64 69    The primary di
5d50: 66 66 65 72 65 6e 63 65 73 20 61 72 65 3a 0d 0a  fferences are:..
5d60: 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20 74 79      /// <list ty
5d70: 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a 20 20  pe="bullet">..  
5d80: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
5d90: 63 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e  cription>Only on
5da0: 65 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 20  e character can 
5db0: 62 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 61  be provided as a
5dc0: 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61   separator chara
5dd0: 63 74 65 72 3c 2f 64 65 73 63 72 69 70 74 69 6f  cter</descriptio
5de0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
5df0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5e00: 70 74 69 6f 6e 3e 51 75 6f 74 65 64 20 74 65 78  ption>Quoted tex
5e10: 74 20 69 6e 73 69 64 65 20 74 68 65 20 73 74 72  t inside the str
5e20: 69 6e 67 20 69 73 20 73 6b 69 70 70 65 64 20 6f  ing is skipped o
5e30: 76 65 72 20 77 68 65 6e 20 73 65 61 72 63 68 69  ver when searchi
5e40: 6e 67 20 66 6f 72 20 74 68 65 20 73 65 70 61 72  ng for the separ
5e50: 61 74 6f 72 2c 20 61 6e 64 20 74 68 65 20 71 75  ator, and the qu
5e60: 6f 74 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64  otes are removed
5e70: 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  .</description><
5e80: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5e90: 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f  </list>..    ///
5ea0: 20 54 68 75 73 2c 20 69 66 20 73 70 6c 69 74 74   Thus, if splitt
5eb0: 69 6e 67 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  ing the followin
5ec0: 67 20 73 74 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67  g string looking
5ed0: 20 66 6f 72 20 61 20 63 6f 6d 6d 61 3a 3c 62 72   for a comma:<br
5ee0: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c  />..    /// One,
5ef0: 54 77 6f 2c 20 22 54 68 72 65 65 2c 20 46 6f 75  Two, "Three, Fou
5f00: 72 22 2c 20 46 69 76 65 3c 62 72 2f 3e 0d 0a 20  r", Five<br/>.. 
5f10: 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20     /// <br/>..  
5f20: 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74    /// The result
5f30: 69 6e 67 20 61 72 72 61 79 20 77 6f 75 6c 64 20  ing array would 
5f40: 63 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20  contain<br/>..  
5f50: 20 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72    /// [0] One<br
5f60: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 31 5d 20  />..    /// [1] 
5f70: 54 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f  Two<br/>..    //
5f80: 2f 20 5b 32 5d 20 54 68 72 65 65 2c 20 46 6f 75  / [2] Three, Fou
5f90: 72 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20  r<br/>..    /// 
5fa0: 5b 33 5d 20 46 69 76 65 3c 62 72 2f 3e 0d 0a 20  [3] Five<br/>.. 
5fb0: 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20     /// <br/>..  
5fc0: 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74 20    /// Note that 
5fd0: 74 68 65 20 6c 65 61 64 69 6e 67 20 61 6e 64 20  the leading and 
5fe0: 74 72 61 69 6c 69 6e 67 20 73 70 61 63 65 73 20  trailing spaces 
5ff0: 77 65 72 65 20 72 65 6d 6f 76 65 64 20 66 72 6f  were removed fro
6000: 6d 20 65 61 63 68 20 69 74 65 6d 20 64 75 72 69  m each item duri
6010: 6e 67 20 74 68 65 20 73 70 6c 69 74 2e 0d 0a 20  ng the split... 
6020: 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73     /// </remarks
6030: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
6040: 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e  m name="source">
6050: 53 6f 75 72 63 65 20 73 74 72 69 6e 67 20 74 6f  Source string to
6060: 20 73 70 6c 69 74 20 61 70 61 72 74 3c 2f 70 61   split apart</pa
6070: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
6080: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72  aram name="separ
6090: 61 74 6f 72 22 3e 53 65 70 61 72 61 74 6f 72 20  ator">Separator 
60a0: 63 68 61 72 61 63 74 65 72 3c 2f 70 61 72 61 6d  character</param
60b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
60c0: 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 61 72 72  rns>A string arr
60d0: 61 79 20 6f 66 20 74 68 65 20 73 70 6c 69 74 20  ay of the split 
60e0: 75 70 20 65 6c 65 6d 65 6e 74 73 3c 2f 72 65 74  up elements</ret
60f0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
6100: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b  c static string[
6110: 5d 20 53 70 6c 69 74 28 73 74 72 69 6e 67 20 73  ] Split(string s
6120: 6f 75 72 63 65 2c 20 63 68 61 72 20 73 65 70 61  ource, char sepa
6130: 72 61 74 6f 72 29 0d 0a 20 20 20 20 7b 0d 0a 20  rator)..    {.. 
6140: 20 20 20 20 20 63 68 61 72 5b 5d 20 74 6f 6b 73       char[] toks
6150: 20 3d 20 6e 65 77 20 63 68 61 72 5b 32 5d 20 7b   = new char[2] {
6160: 20 27 5c 22 27 2c 20 73 65 70 61 72 61 74 6f 72   '\"', separator
6170: 20 7d 3b 0d 0a 20 20 20 20 20 20 63 68 61 72 5b   };..      char[
6180: 5d 20 71 75 6f 74 20 3d 20 6e 65 77 20 63 68 61  ] quot = new cha
6190: 72 5b 31 5d 20 7b 20 27 5c 22 27 20 7d 3b 0d 0a  r[1] { '\"' };..
61a0: 20 20 20 20 20 20 69 6e 74 20 6e 20 3d 20 30 3b        int n = 0;
61b0: 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c 73 74 72  ..      List<str
61c0: 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 20 4c 69  ing> ls = new Li
61d0: 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b 0d 0a 20  st<string>();.. 
61e0: 20 20 20 20 20 73 74 72 69 6e 67 20 73 3b 0d 0a       string s;..
61f0: 0d 0a 20 20 20 20 20 20 77 68 69 6c 65 20 28 73  ..      while (s
6200: 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30  ource.Length > 0
6210: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
6220: 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65 2e 49      n = source.I
6230: 6e 64 65 78 4f 66 41 6e 79 28 74 6f 6b 73 2c 20  ndexOfAny(toks, 
6240: 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  n);..        if 
6250: 28 6e 20 3d 3d 20 2d 31 29 20 62 72 65 61 6b 3b  (n == -1) break;
6260: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 6f  ..        if (so
6270: 75 72 63 65 5b 6e 5d 20 3d 3d 20 74 6f 6b 73 5b  urce[n] == toks[
6280: 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  0])..        {..
6290: 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f 75 72            //sour
62a0: 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 65 6d 6f  ce = source.Remo
62b0: 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20  ve(n, 1);..     
62c0: 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 65 2e       n = source.
62d0: 49 6e 64 65 78 4f 66 41 6e 79 28 71 75 6f 74 2c  IndexOfAny(quot,
62e0: 20 6e 20 2b 20 31 29 3b 0d 0a 20 20 20 20 20 20   n + 1);..      
62f0: 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d 31 29      if (n == -1)
6300: 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20  ..          {.. 
6310: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f 75             //sou
6320: 72 63 65 20 3d 20 22 5c 22 22 20 2b 20 73 6f 75  rce = "\"" + sou
6330: 72 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rce;..          
6340: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
6350: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
6360: 20 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20   n++;..         
6370: 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f 75 72   //source = sour
6380: 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31 29 3b  ce.Remove(n, 1);
6390: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
63a0: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
63b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
63c0: 73 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73 74  s = source.Subst
63d0: 72 69 6e 67 28 30 2c 20 6e 29 2e 54 72 69 6d 28  ring(0, n).Trim(
63e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  );..          if
63f0: 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20 26   (s.Length > 1 &
6400: 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b 30  & s[0] == quot[0
6410: 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68 20  ] && s[s.Length 
6420: 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20  - 1] == s[0]).. 
6430: 20 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73             s = s
6440: 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20 73 2e  .Substring(1, s.
6450: 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 0d 0a  Length - 2);....
6460: 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 65            source
6470: 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 73 74 72   = source.Substr
6480: 69 6e 67 28 6e 20 2b 20 31 29 2e 54 72 69 6d 28  ing(n + 1).Trim(
6490: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66  );..          if
64a0: 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 30 29 20   (s.Length > 0) 
64b0: 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20 20 20 20  ls.Add(s);..    
64c0: 20 20 20 20 20 20 6e 20 3d 20 30 3b 0d 0a 20 20        n = 0;..  
64d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d        }..      }
64e0: 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75 72  ..      if (sour
64f0: 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a  ce.Length > 0)..
6500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6510: 20 73 20 3d 20 73 6f 75 72 63 65 2e 54 72 69 6d   s = source.Trim
6520: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ();..        if 
6530: 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 20 26 26  (s.Length > 1 &&
6540: 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 5b 30 5d   s[0] == quot[0]
6550: 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 68 20 2d   && s[s.Length -
6560: 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d 0a 20 20   1] == s[0])..  
6570: 20 20 20 20 20 20 20 20 73 20 3d 20 73 2e 53 75          s = s.Su
6580: 62 73 74 72 69 6e 67 28 31 2c 20 73 2e 4c 65 6e  bstring(1, s.Len
6590: 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 20 20 20  gth - 2);..     
65a0: 20 20 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20     ls.Add(s);.. 
65b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
65c0: 73 74 72 69 6e 67 5b 5d 20 61 72 20 3d 20 6e 65  string[] ar = ne
65d0: 77 20 73 74 72 69 6e 67 5b 6c 73 2e 43 6f 75 6e  w string[ls.Coun
65e0: 74 5d 3b 0d 0a 20 20 20 20 20 20 6c 73 2e 43 6f  t];..      ls.Co
65f0: 70 79 54 6f 28 61 72 2c 20 30 29 3b 0d 0a 0d 0a  pyTo(ar, 0);....
6600: 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 72 3b        return ar;
6610: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6620: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6630: 20 20 2f 2f 2f 20 53 70 6c 69 74 73 20 74 68 65    /// Splits the
6640: 20 73 70 65 63 69 66 69 65 64 20 73 74 72 69 6e   specified strin
6650: 67 20 69 6e 74 6f 20 6d 75 6c 74 69 70 6c 65 20  g into multiple 
6660: 73 74 72 69 6e 67 73 20 62 61 73 65 64 20 6f 6e  strings based on
6670: 20 61 20 73 65 70 61 72 61 74 6f 72 0d 0a 20 20   a separator..  
6680: 20 20 2f 2f 2f 20 61 6e 64 20 72 65 74 75 72 6e    /// and return
6690: 73 20 74 68 65 20 72 65 73 75 6c 74 20 61 73 20  s the result as 
66a0: 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74 72 69  an array of stri
66b0: 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ngs...    /// </
66c0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
66d0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76  / <param name="v
66e0: 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  alue">..    /// 
66f0: 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 73 70  The string to sp
6700: 6c 69 74 20 69 6e 74 6f 20 70 69 65 63 65 73 20  lit into pieces 
6710: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 73 65 70  based on the sep
6720: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
6730: 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f 2f 20 74  .  If..    /// t
6740: 68 69 73 20 73 74 72 69 6e 67 20 69 73 20 6e 75  his string is nu
6750: 6c 6c 2c 20 6e 75 6c 6c 20 77 69 6c 6c 20 61 6c  ll, null will al
6760: 77 61 79 73 20 62 65 20 72 65 74 75 72 6e 65 64  ways be returned
6770: 2e 20 20 49 66 20 74 68 69 73 20 73 74 72 69 6e  .  If this strin
6780: 67 20 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 65 6d  g is..    /// em
6790: 70 74 79 2c 20 61 6e 20 61 72 72 61 79 20 6f 66  pty, an array of
67a0: 20 7a 65 72 6f 20 73 74 72 69 6e 67 73 20 77 69   zero strings wi
67b0: 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 72 65 74  ll always be ret
67c0: 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  urned...    /// 
67d0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
67e0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73  / <param name="s
67f0: 65 70 61 72 61 74 6f 72 22 3e 0d 0a 20 20 20 20  eparator">..    
6800: 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 63 74 65  /// The characte
6810: 72 20 75 73 65 64 20 74 6f 20 64 69 76 69 64 65  r used to divide
6820: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74   the original st
6830: 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 2d 73 74  ring into sub-st
6840: 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20  rings...    /// 
6850: 54 68 69 73 20 63 68 61 72 61 63 74 65 72 20 63  This character c
6860: 61 6e 6e 6f 74 20 62 65 20 61 20 62 61 63 6b 73  annot be a backs
6870: 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65  lash or a double
6880: 2d 71 75 6f 74 65 3b 20 6f 74 68 65 72 77 69 73  -quote; otherwis
6890: 65 2c 20 6e 6f 0d 0a 20 20 20 20 2f 2f 2f 20 77  e, no..    /// w
68a0: 6f 72 6b 20 77 69 6c 6c 20 62 65 20 70 65 72 66  ork will be perf
68b0: 6f 72 6d 65 64 20 61 6e 64 20 6e 75 6c 6c 20 77  ormed and null w
68c0: 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e  ill be returned.
68d0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
68e0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
68f0: 61 6d 20 6e 61 6d 65 3d 22 6b 65 65 70 51 75 6f  am name="keepQuo
6900: 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66  te">..    /// If
6910: 20 74 68 69 73 20 70 61 72 61 6d 65 74 65 72 20   this parameter 
6920: 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61 6c 6c  is non-zero, all
6930: 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63 68   double-quote ch
6940: 61 72 61 63 74 65 72 73 20 77 69 6c 6c 20 62 65  aracters will be
6950: 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 74 61 69 6e  ..    /// retain
6960: 65 64 20 69 6e 20 74 68 65 20 72 65 74 75 72 6e  ed in the return
6970: 65 64 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e  ed list of strin
6980: 67 73 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  gs; otherwise, t
6990: 68 65 79 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20  hey will be..   
69a0: 20 2f 2f 2f 20 64 72 6f 70 70 65 64 2e 0d 0a 20   /// dropped... 
69b0: 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
69c0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
69d0: 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e 0d 0a 20  name="error">.. 
69e0: 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 61 69 6c     /// Upon fail
69f0: 75 72 65 2c 20 74 68 69 73 20 70 61 72 61 6d 65  ure, this parame
6a00: 74 65 72 20 77 69 6c 6c 20 62 65 20 6d 6f 64 69  ter will be modi
6a10: 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  fied to contain 
6a20: 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 0d 0a  an appropriate..
6a30: 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 20 6d 65      /// error me
6a40: 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  ssage...    /// 
6a50: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
6a60: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
6a70: 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 61 72 72   /// The new arr
6a80: 61 79 20 6f 66 20 73 74 72 69 6e 67 73 20 6f 72  ay of strings or
6a90: 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 69 6e 70   null if the inp
6aa0: 75 74 20 73 74 72 69 6e 67 20 69 73 20 6e 75 6c  ut string is nul
6ab0: 6c 20 2d 4f 52 2d 20 74 68 65 0d 0a 20 20 20 20  l -OR- the..    
6ac0: 2f 2f 2f 20 73 65 70 61 72 61 74 6f 72 20 63 68  /// separator ch
6ad0: 61 72 61 63 74 65 72 20 69 73 20 61 20 62 61 63  aracter is a bac
6ae0: 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 62  kslash or a doub
6af0: 6c 65 2d 71 75 6f 74 65 20 2d 4f 52 2d 20 74 68  le-quote -OR- th
6b00: 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f  e string..    //
6b10: 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 75 6e  / contains an un
6b20: 62 61 6c 61 6e 63 65 64 20 62 61 63 6b 73 6c 61  balanced backsla
6b30: 73 68 20 6f 72 20 64 6f 75 62 6c 65 2d 71 75 6f  sh or double-quo
6b40: 74 65 20 63 68 61 72 61 63 74 65 72 2e 0d 0a 20  te character... 
6b50: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
6b60: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
6b70: 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20  static string[] 
6b80: 4e 65 77 53 70 6c 69 74 28 0d 0a 20 20 20 20 20  NewSplit(..     
6b90: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2c     string value,
6ba0: 0d 0a 20 20 20 20 20 20 20 20 63 68 61 72 20 73  ..        char s
6bb0: 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 20 20 20  eparator,..     
6bc0: 20 20 20 62 6f 6f 6c 20 6b 65 65 70 51 75 6f 74     bool keepQuot
6bd0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20  e,..        ref 
6be0: 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
6bf0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
6c00: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68          const ch
6c10: 61 72 20 45 73 63 61 70 65 43 68 61 72 20 3d 20  ar EscapeChar = 
6c20: 27 5c 5c 27 3b 0d 0a 20 20 20 20 20 20 20 20 63  '\\';..        c
6c30: 6f 6e 73 74 20 63 68 61 72 20 51 75 6f 74 65 43  onst char QuoteC
6c40: 68 61 72 20 3d 20 27 5c 22 27 3b 0d 0a 0d 0a 20  har = '\"';.... 
6c50: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6c60: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 74 20 69     // NOTE: It i
6c70: 73 20 69 6c 6c 65 67 61 6c 20 66 6f 72 20 74 68  s illegal for th
6c80: 65 20 73 65 70 61 72 61 74 6f 72 20 63 68 61 72  e separator char
6c90: 61 63 74 65 72 20 74 6f 20 62 65 20 65 69 74 68  acter to be eith
6ca0: 65 72 20 61 0d 0a 20 20 20 20 20 20 20 20 2f 2f  er a..        //
6cb0: 20 20 20 20 20 20 20 62 61 63 6b 73 6c 61 73 68         backslash
6cc0: 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f   or a double-quo
6cd0: 74 65 20 62 65 63 61 75 73 65 20 62 6f 74 68 20  te because both 
6ce0: 6f 66 20 74 68 6f 73 65 20 63 68 61 72 61 63 74  of those charact
6cf0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  ers..        // 
6d00: 20 20 20 20 20 20 61 72 65 20 75 73 65 64 20 66        are used f
6d10: 6f 72 20 65 73 63 61 70 69 6e 67 20 6f 74 68 65  or escaping othe
6d20: 72 20 63 68 61 72 61 63 74 65 72 73 20 28 65 2e  r characters (e.
6d30: 67 2e 20 74 68 65 20 73 65 70 61 72 61 74 6f 72  g. the separator
6d40: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20  ..        //    
6d50: 20 20 20 63 68 61 72 61 63 74 65 72 29 2e 0d 0a     character)...
6d60: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6d70: 20 20 20 20 69 66 20 28 28 73 65 70 61 72 61 74      if ((separat
6d80: 6f 72 20 3d 3d 20 45 73 63 61 70 65 43 68 61 72  or == EscapeChar
6d90: 29 20 7c 7c 20 28 73 65 70 61 72 61 74 6f 72 20  ) || (separator 
6da0: 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 29 0d 0a  == QuoteChar))..
6db0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6dc0: 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
6dd0: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63  separator charac
6de0: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 74 68  ter cannot be th
6df0: 65 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f 74  e escape or quot
6e00: 65 20 63 68 61 72 61 63 74 65 72 73 22 3b 0d 0a  e characters";..
6e10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6e20: 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
6e30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
6e40: 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
6e50: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
6e60: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
6e70: 3d 20 22 73 74 72 69 6e 67 20 76 61 6c 75 65 20  = "string value 
6e80: 74 6f 20 73 70 6c 69 74 20 63 61 6e 6e 6f 74 20  to split cannot 
6e90: 62 65 20 6e 75 6c 6c 22 3b 0d 0a 20 20 20 20 20  be null";..     
6ea0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
6eb0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ll;..        }..
6ec0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65  ..        int le
6ed0: 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e 4c 65 6e  ngth = value.Len
6ee0: 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
6ef0: 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d 20 30 29  if (length == 0)
6f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
6f10: 74 75 72 6e 20 6e 65 77 20 73 74 72 69 6e 67 5b  turn new string[
6f20: 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 4c  0];....        L
6f30: 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 69 73 74  ist<string> list
6f40: 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
6f50: 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng>();..        
6f60: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 65 6c  StringBuilder el
6f70: 65 6d 65 6e 74 20 3d 20 6e 65 77 20 53 74 72 69  ement = new Stri
6f80: 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 20 20  ngBuilder();..  
6f90: 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20        int index 
6fa0: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f  = 0;..        bo
6fb0: 6f 6c 20 65 73 63 61 70 65 20 3d 20 66 61 6c 73  ol escape = fals
6fc0: 65 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  e;..        bool
6fd0: 20 71 75 6f 74 65 20 3d 20 66 61 6c 73 65 3b 0d   quote = false;.
6fe0: 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65  ...        while
6ff0: 20 28 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68   (index < length
7000: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
7010: 20 20 20 20 20 20 20 20 20 20 63 68 61 72 20 63            char c
7020: 68 61 72 61 63 74 65 72 20 3d 20 76 61 6c 75 65  haracter = value
7030: 5b 69 6e 64 65 78 2b 2b 5d 3b 0d 0a 0d 0a 20 20  [index++];....  
7040: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 73            if (es
7050: 63 61 70 65 29 0d 0a 20 20 20 20 20 20 20 20 20  cape)..         
7060: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7070: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7080: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43            // HAC
7090: 4b 3a 20 4f 6e 6c 79 20 63 6f 6e 73 69 64 65 72  K: Only consider
70a0: 20 74 68 65 20 65 73 63 61 70 65 20 63 68 61 72   the escape char
70b0: 61 63 74 65 72 20 74 6f 20 62 65 20 61 6e 20 61  acter to be an a
70c0: 63 74 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 20  ctual..         
70d0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
70e0: 22 65 73 63 61 70 65 22 20 69 66 20 69 74 20 69  "escape" if it i
70f0: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20  s followed by a 
7100: 72 65 73 65 72 76 65 64 20 63 68 61 72 61 63 74  reserved charact
7110: 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er;..           
7120: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 74       //       ot
7130: 68 65 72 77 69 73 65 2c 20 65 6d 69 74 20 74 68  herwise, emit th
7140: 65 20 6f 72 69 67 69 6e 61 6c 20 65 73 63 61 70  e original escap
7150: 65 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 0d  e character and.
7160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7170: 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 63 75   //       the cu
7180: 72 72 65 6e 74 20 63 68 61 72 61 63 74 65 72 20  rrent character 
7190: 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 20  in an effort to 
71a0: 68 65 6c 70 20 70 72 65 73 65 72 76 65 0d 0a 20  help preserve.. 
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
71c0: 2f 20 20 20 20 20 20 20 74 68 65 20 6f 72 69 67  /       the orig
71d0: 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 6f 6e 74  inal string cont
71e0: 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ent...          
71f0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7200: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 63            if ((c
7210: 68 61 72 61 63 74 65 72 20 21 3d 20 45 73 63 61  haracter != Esca
7220: 70 65 43 68 61 72 29 20 26 26 0d 0a 20 20 20 20  peChar) &&..    
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 51 75  (character != Qu
7250: 6f 74 65 43 68 61 72 29 20 26 26 0d 0a 20 20 20  oteChar) &&..   
7260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7270: 20 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 73   (character != s
7280: 65 70 61 72 61 74 6f 72 29 29 0d 0a 20 20 20 20  eparator))..    
7290: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72b0: 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e     element.Appen
72c0: 64 28 45 73 63 61 70 65 43 68 61 72 29 3b 0d 0a  d(EscapeChar);..
72d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72e0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
72f0: 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70       element.App
7300: 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d  end(character);.
7310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7320: 20 65 73 63 61 70 65 20 3d 20 66 61 6c 73 65 3b   escape = false;
7330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
7340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
7350: 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72 20  e if (character 
7360: 3d 3d 20 45 73 63 61 70 65 43 68 61 72 29 0d 0a  == EscapeChar)..
7370: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
7390: 73 63 61 70 65 20 3d 20 74 72 75 65 3b 0d 0a 20  scape = true;.. 
73a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
73b0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
73c0: 66 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20  f (character == 
73d0: 51 75 6f 74 65 43 68 61 72 29 0d 0a 20 20 20 20  QuoteChar)..    
73e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
73f0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
7400: 65 65 70 51 75 6f 74 65 29 0d 0a 20 20 20 20 20  eepQuote)..     
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
7420: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68  lement.Append(ch
7430: 61 72 61 63 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  aracter);....   
7440: 20 20 20 20 20 20 20 20 20 20 20 20 20 71 75 6f               quo
7450: 74 65 20 3d 20 21 71 75 6f 74 65 3b 0d 0a 20 20  te = !quote;..  
7460: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7470: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
7480: 20 28 63 68 61 72 61 63 74 65 72 20 3d 3d 20 73   (character == s
7490: 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20 20 20  eparator)..     
74a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
74b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 71 75            if (qu
74c0: 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ote)..          
74d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
74e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65               ele
74f0: 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68 61 72  ment.Append(char
7500: 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20  acter);..       
7510: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
7520: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
7530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7540: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7550: 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 41 64           list.Ad
7560: 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69  d(element.ToStri
7570: 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
7580: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d              elem
7590: 65 6e 74 2e 4c 65 6e 67 74 68 20 3d 20 30 3b 0d  ent.Length = 0;.
75a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
75b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
75c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65  }..            e
75d0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
75e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
75f0: 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65      element.Appe
7600: 6e 64 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a  nd(character);..
7610: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
7620: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7630: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
7640: 2f 2f 20 4e 4f 54 45 3a 20 41 6e 20 75 6e 62 61  // NOTE: An unba
7650: 6c 61 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72  lanced escape or
7660: 20 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72   quote character
7670: 20 69 6e 20 74 68 65 20 73 74 72 69 6e 67 20 69   in the string i
7680: 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20  s..        //   
7690: 20 20 20 20 63 6f 6e 73 69 64 65 72 65 64 20 74      considered t
76a0: 6f 20 62 65 20 61 20 66 61 74 61 6c 20 65 72 72  o be a fatal err
76b0: 6f 72 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 72  or; therefore, r
76c0: 65 74 75 72 6e 20 6e 75 6c 6c 2e 0d 0a 20 20 20  eturn null...   
76d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
76e0: 20 69 66 20 28 65 73 63 61 70 65 20 7c 7c 20 71   if (escape || q
76f0: 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 20 7b  uote)..        {
7700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72  ..            er
7710: 72 6f 72 20 3d 20 22 75 6e 62 61 6c 61 6e 63 65  ror = "unbalance
7720: 64 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f 74  d escape or quot
7730: 65 20 63 68 61 72 61 63 74 65 72 20 66 6f 75 6e  e character foun
7740: 64 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  d";..           
7750: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
7760: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7770: 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 2e      if (element.
7780: 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20  Length > 0)..   
7790: 20 20 20 20 20 20 20 20 20 6c 69 73 74 2e 41 64           list.Ad
77a0: 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69  d(element.ToStri
77b0: 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng());....      
77c0: 20 20 72 65 74 75 72 6e 20 6c 69 73 74 2e 54 6f    return list.To
77d0: 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 20 7d 0d  Array();..    }.
77e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
77f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 51 75  ary>..    /// Qu
7800: 65 72 69 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eries and return
7810: 73 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70  s the string rep
7820: 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  resentation for 
7830: 61 6e 20 6f 62 6a 65 63 74 2c 20 75 73 69 6e 67  an object, using
7840: 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 70   the..    /// sp
7850: 65 63 69 66 69 65 64 20 28 6f 72 20 63 75 72 72  ecified (or curr
7860: 65 6e 74 29 20 66 6f 72 6d 61 74 20 70 72 6f 76  ent) format prov
7870: 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ider...    /// <
7880: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
7890: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
78a0: 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  obj">..    /// T
78b0: 68 65 20 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e  he object instan
78c0: 63 65 20 74 6f 20 72 65 74 75 72 6e 20 74 68 65  ce to return the
78d0: 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e   string represen
78e0: 74 61 74 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20  tation for...   
78f0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7900: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7910: 6d 65 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a  me="provider">..
7920: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d      /// The form
7930: 61 74 20 70 72 6f 76 69 64 65 72 20 74 6f 20 75  at provider to u
7940: 73 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20 69 66 20  se -OR- null if 
7950: 74 68 65 20 63 75 72 72 65 6e 74 20 66 6f 72 6d  the current form
7960: 61 74 20 70 72 6f 76 69 64 65 72 20 66 6f 72 0d  at provider for.
7970: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 68 72  .    /// the thr
7980: 65 61 64 20 73 68 6f 75 6c 64 20 62 65 20 75 73  ead should be us
7990: 65 64 20 69 6e 73 74 65 61 64 2e 0d 0a 20 20 20  ed instead...   
79a0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
79b0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
79c0: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74  ..    /// The st
79d0: 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
79e0: 69 6f 6e 20 66 6f 72 20 74 68 65 20 6f 62 6a 65  ion for the obje
79f0: 63 74 20 69 6e 73 74 61 6e 63 65 20 2d 4f 52 2d  ct instance -OR-
7a00: 20 6e 75 6c 6c 20 69 66 20 74 68 65 0d 0a 20 20   null if the..  
7a10: 20 20 2f 2f 2f 20 6f 62 6a 65 63 74 20 69 6e 73    /// object ins
7a20: 74 61 6e 63 65 20 69 73 20 61 6c 73 6f 20 6e 75  tance is also nu
7a30: 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ll...    /// </r
7a40: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62  eturns>..    pub
7a50: 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
7a60: 67 20 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72  g ToStringWithPr
7a70: 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20  ovider(..       
7a80: 20 6f 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a 20 20   object obj,..  
7a90: 20 20 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f        IFormatPro
7aa0: 76 69 64 65 72 20 70 72 6f 76 69 64 65 72 0d 0a  vider provider..
7ab0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
7ac0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6f 62  ..        if (ob
7ad0: 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  j == null)..    
7ae0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
7af0: 75 6c 6c 3b 20 2f 2a 20 6e 75 6c 6c 20 2d 2d 3e  ull; /* null -->
7b00: 20 6e 75 6c 6c 20 2a 2f 0d 0a 0d 0a 20 20 20 20   null */....    
7b10: 20 20 20 20 69 66 20 28 6f 62 6a 20 69 73 20 73      if (obj is s
7b20: 74 72 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  tring)..        
7b30: 20 20 20 20 72 65 74 75 72 6e 20 28 73 74 72 69      return (stri
7b40: 6e 67 29 6f 62 6a 3b 20 2f 2a 20 69 64 65 6e 74  ng)obj; /* ident
7b50: 69 74 79 20 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20  ity */....      
7b60: 20 20 49 43 6f 6e 76 65 72 74 69 62 6c 65 20 63    IConvertible c
7b70: 6f 6e 76 65 72 74 69 62 6c 65 20 3d 20 6f 62 6a  onvertible = obj
7b80: 20 61 73 20 49 43 6f 6e 76 65 72 74 69 62 6c 65   as IConvertible
7b90: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20  ;....        if 
7ba0: 28 63 6f 6e 76 65 72 74 69 62 6c 65 20 21 3d 20  (convertible != 
7bb0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
7bc0: 20 20 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 72     return conver
7bd0: 74 69 62 6c 65 2e 54 6f 53 74 72 69 6e 67 28 70  tible.ToString(p
7be0: 72 6f 76 69 64 65 72 29 3b 0d 0a 0d 0a 20 20 20  rovider);....   
7bf0: 20 20 20 20 20 72 65 74 75 72 6e 20 6f 62 6a 2e       return obj.
7c00: 54 6f 53 74 72 69 6e 67 28 29 3b 20 2f 2a 20 6e  ToString(); /* n
7c10: 6f 74 20 49 43 6f 6e 76 65 72 74 69 62 6c 65 20  ot IConvertible 
7c20: 2a 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  */..    }....   
7c30: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
7c40: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
7c50: 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 61   to convert an a
7c60: 72 62 69 74 72 61 72 79 20 6f 62 6a 65 63 74 20  rbitrary object 
7c70: 74 6f 20 74 68 65 20 42 6f 6f 6c 65 61 6e 20 64  to the Boolean d
7c80: 61 74 61 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f  ata type...    /
7c90: 2f 2f 20 4e 75 6c 6c 20 6f 62 6a 65 63 74 20 76  // Null object v
7ca0: 61 6c 75 65 73 20 61 72 65 20 63 6f 6e 76 65 72  alues are conver
7cb0: 74 65 64 20 74 6f 20 66 61 6c 73 65 2e 20 20 54  ted to false.  T
7cc0: 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69  hrows an excepti
7cd0: 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 75 70 6f 6e  on..    /// upon
7ce0: 20 66 61 69 6c 75 72 65 2e 0d 0a 20 20 20 20 2f   failure...    /
7cf0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7d00: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7d10: 6d 65 3d 22 6f 62 6a 22 3e 0d 0a 20 20 20 20 2f  me="obj">..    /
7d20: 2f 2f 20 54 68 65 20 6f 62 6a 65 63 74 20 76 61  // The object va
7d30: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  lue to convert..
7d40: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
7d50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
7d60: 6d 20 6e 61 6d 65 3d 22 70 72 6f 76 69 64 65 72  m name="provider
7d70: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
7d80: 66 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72 20  format provider 
7d90: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  to use...    ///
7da0: 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f   </param>..    /
7db0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7dc0: 76 69 61 46 72 61 6d 65 77 6f 72 6b 22 3e 0d 0a  viaFramework">..
7dd0: 20 20 20 20 2f 2f 2f 20 49 66 20 6e 6f 6e 2d 7a      /// If non-z
7de0: 65 72 6f 2c 20 61 20 73 74 72 69 6e 67 20 76 61  ero, a string va
7df0: 6c 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76  lue will be conv
7e00: 65 72 74 65 64 20 75 73 69 6e 67 20 74 68 65 0d  erted using the.
7e10: 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
7e20: 65 66 3d 22 43 6f 6e 76 65 72 74 2e 54 6f 42 6f  ef="Convert.ToBo
7e30: 6f 6c 65 61 6e 28 4f 62 6a 65 63 74 2c 20 49 46  olean(Object, IF
7e40: 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 29 22 20  ormatProvider)" 
7e50: 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74 68  />..    /// meth
7e60: 6f 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74  od; otherwise, t
7e70: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 54 6f  he <see cref="To
7e80: 42 6f 6f 6c 65 61 6e 28 53 74 72 69 6e 67 29 22  Boolean(String)"
7e90: 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 6d 65 74   />..    /// met
7ea0: 68 6f 64 20 77 69 6c 6c 20 62 65 20 75 73 65 64  hod will be used
7eb0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
7ec0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
7ed0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
7ee0: 54 68 65 20 63 6f 6e 76 65 72 74 65 64 20 62 6f  The converted bo
7ef0: 6f 6c 65 61 6e 20 76 61 6c 75 65 2e 0d 0a 20 20  olean value...  
7f00: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
7f10: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
7f20: 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f  tatic bool ToBoo
7f30: 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20 20 20 6f  lean(..        o
7f40: 62 6a 65 63 74 20 6f 62 6a 2c 0d 0a 20 20 20 20  bject obj,..    
7f50: 20 20 20 20 49 46 6f 72 6d 61 74 50 72 6f 76 69      IFormatProvi
7f60: 64 65 72 20 70 72 6f 76 69 64 65 72 2c 0d 0a 20  der provider,.. 
7f70: 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 69 61 46         bool viaF
7f80: 72 61 6d 65 77 6f 72 6b 0d 0a 20 20 20 20 20 20  ramework..      
7f90: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
7fa0: 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d 20 6e      if (obj == n
7fb0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7fc0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
7fd0: 0a 0d 0a 20 20 20 20 20 20 20 20 54 79 70 65 43  ...        TypeC
7fe0: 6f 64 65 20 74 79 70 65 43 6f 64 65 20 3d 20 54  ode typeCode = T
7ff0: 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28  ype.GetTypeCode(
8000: 6f 62 6a 2e 47 65 74 54 79 70 65 28 29 29 3b 0d  obj.GetType());.
8010: 0a 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63  ...        switc
8020: 68 20 28 74 79 70 65 43 6f 64 65 29 0d 0a 20 20  h (typeCode)..  
8030: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8040: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
8050: 64 65 2e 45 6d 70 74 79 3a 0d 0a 20 20 20 20 20  de.Empty:..     
8060: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
8070: 43 6f 64 65 2e 44 42 4e 75 6c 6c 3a 0d 0a 20 20  Code.DBNull:..  
8080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
8090: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
80a0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79           case Ty
80b0: 70 65 43 6f 64 65 2e 42 6f 6f 6c 65 61 6e 3a 0d  peCode.Boolean:.
80c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
80d0: 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29 6f 62   return (bool)ob
80e0: 6a 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  j;..            
80f0: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 43 68  case TypeCode.Ch
8100: 61 72 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ar:..           
8110: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 63 68       return ((ch
8120: 61 72 29 6f 62 6a 29 20 21 3d 20 28 63 68 61 72  ar)obj) != (char
8130: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
8140: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
8150: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 53 42  case TypeCode.SB
8160: 79 74 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  yte:..          
8170: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 73        return ((s
8180: 62 79 74 65 29 6f 62 6a 29 20 21 3d 20 28 73 62  byte)obj) != (sb
8190: 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a 20 66  yte)0 ? true : f
81a0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
81b0: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
81c0: 2e 42 79 74 65 3a 0d 0a 20 20 20 20 20 20 20 20  .Byte:..        
81d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
81e0: 28 62 79 74 65 29 6f 62 6a 29 20 21 3d 20 28 62  (byte)obj) != (b
81f0: 79 74 65 29 30 20 3f 20 74 72 75 65 20 3a 20 66  yte)0 ? true : f
8200: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
8210: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
8220: 2e 49 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20 20  .Int16:..       
8230: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8240: 28 28 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d 20  ((short)obj) != 
8250: 28 73 68 6f 72 74 29 30 20 3f 20 74 72 75 65 20  (short)0 ? true 
8260: 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  : false;..      
8270: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
8280: 6f 64 65 2e 55 49 6e 74 31 36 3a 0d 0a 20 20 20  ode.UInt16:..   
8290: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
82a0: 75 72 6e 20 28 28 75 73 68 6f 72 74 29 6f 62 6a  urn ((ushort)obj
82b0: 29 20 21 3d 20 28 75 73 68 6f 72 74 29 30 20 3f  ) != (ushort)0 ?
82c0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
82e0: 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 33 32 3a   TypeCode.Int32:
82f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8300: 20 20 72 65 74 75 72 6e 20 28 28 69 6e 74 29 6f    return ((int)o
8310: 62 6a 29 20 21 3d 20 28 69 6e 74 29 30 20 3f 20  bj) != (int)0 ? 
8320: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
8330: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
8340: 54 79 70 65 43 6f 64 65 2e 55 49 6e 74 33 32 3a  TypeCode.UInt32:
8350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8360: 20 20 72 65 74 75 72 6e 20 28 28 75 69 6e 74 29    return ((uint)
8370: 6f 62 6a 29 20 21 3d 20 28 75 69 6e 74 29 30 20  obj) != (uint)0 
8380: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
8390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
83a0: 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 36 34  e TypeCode.Int64
83b0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
83c0: 20 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e 67     return ((long
83d0: 29 6f 62 6a 29 20 21 3d 20 28 6c 6f 6e 67 29 30  )obj) != (long)0
83e0: 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b   ? true : false;
83f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
8400: 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49 6e 74  se TypeCode.UInt
8410: 36 34 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  64:..           
8420: 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 75 6c       return ((ul
8430: 6f 6e 67 29 6f 62 6a 29 20 21 3d 20 28 75 6c 6f  ong)obj) != (ulo
8440: 6e 67 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61  ng)0 ? true : fa
8450: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
8460: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
8470: 53 69 6e 67 6c 65 3a 0d 0a 20 20 20 20 20 20 20  Single:..       
8480: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8490: 28 28 66 6c 6f 61 74 29 6f 62 6a 29 20 21 3d 20  ((float)obj) != 
84a0: 28 66 6c 6f 61 74 29 30 2e 30 20 3f 20 74 72 75  (float)0.0 ? tru
84b0: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
84c0: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
84d0: 65 43 6f 64 65 2e 44 6f 75 62 6c 65 3a 0d 0a 20  eCode.Double:.. 
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
84f0: 65 74 75 72 6e 20 28 28 64 6f 75 62 6c 65 29 6f  eturn ((double)o
8500: 62 6a 29 20 21 3d 20 28 64 6f 75 62 6c 65 29 30  bj) != (double)0
8510: 2e 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  .0 ? true : fals
8520: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
8530: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 44 65  case TypeCode.De
8540: 63 69 6d 61 6c 3a 0d 0a 20 20 20 20 20 20 20 20  cimal:..        
8550: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
8560: 28 64 65 63 69 6d 61 6c 29 6f 62 6a 29 20 21 3d  (decimal)obj) !=
8570: 20 44 65 63 69 6d 61 6c 2e 5a 65 72 6f 20 3f 20   Decimal.Zero ? 
8580: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20  true : false;.. 
8590: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
85a0: 54 79 70 65 43 6f 64 65 2e 53 74 72 69 6e 67 3a  TypeCode.String:
85b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
85c0: 20 20 72 65 74 75 72 6e 20 76 69 61 46 72 61 6d    return viaFram
85d0: 65 77 6f 72 6b 20 3f 0d 0a 20 20 20 20 20 20 20  ework ?..       
85e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
85f0: 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28 6f  vert.ToBoolean(o
8600: 62 6a 2c 20 70 72 6f 76 69 64 65 72 29 20 3a 0d  bj, provider) :.
8610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8620: 20 20 20 20 20 54 6f 42 6f 6f 6c 65 61 6e 28 54       ToBoolean(T
8630: 6f 53 74 72 69 6e 67 57 69 74 68 50 72 6f 76 69  oStringWithProvi
8640: 64 65 72 28 6f 62 6a 2c 20 70 72 6f 76 69 64 65  der(obj, provide
8650: 72 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r));..          
8660: 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
8670: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
8680: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
8690: 70 74 69 6f 6e 28 53 74 72 69 6e 67 2e 46 6f 72  ption(String.For
86a0: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
86b0: 20 20 20 20 20 20 20 20 20 20 43 75 6c 74 75 72            Cultur
86c0: 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c  eInfo.CurrentCul
86d0: 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  ture,..         
86e0: 20 20 20 20 20 20 20 20 20 20 20 22 43 61 6e 6e             "Cann
86f0: 6f 74 20 63 6f 6e 76 65 72 74 20 74 79 70 65 20  ot convert type 
8700: 7b 30 7d 20 74 6f 20 62 6f 6f 6c 65 61 6e 22 2c  {0} to boolean",
8710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8720: 20 20 20 20 20 20 74 79 70 65 43 6f 64 65 29 29        typeCode))
8730: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
8740: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
8750: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8760: 2f 20 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75  / Convert a valu
8770: 65 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c  e to true or fal
8780: 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  se...    /// </s
8790: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
87a0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f   <param name="so
87b0: 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 6f  urce">A string o
87c0: 72 20 6e 75 6d 62 65 72 20 72 65 70 72 65 73 65  r number represe
87d0: 6e 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61  nting true or fa
87e0: 6c 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  lse</param>..   
87f0: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f   /// <returns></
8800: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
8810: 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c  blic static bool
8820: 20 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65 63   ToBoolean(objec
8830: 74 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b  t source)..    {
8840: 0d 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75 72  ..      if (sour
8850: 63 65 20 69 73 20 62 6f 6f 6c 29 20 72 65 74 75  ce is bool) retu
8860: 72 6e 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65 3b  rn (bool)source;
8870: 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ....      return
8880: 20 54 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72   ToBoolean(ToStr
8890: 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72 28  ingWithProvider(
88a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 72  ..          sour
88b0: 63 65 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e  ce, CultureInfo.
88c0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
88d0: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
88e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
88f0: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
8900: 20 61 20 73 74 72 69 6e 67 20 74 6f 20 74 72 75   a string to tru
8910: 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20  e or false...   
8920: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
8930: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
8940: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20  name="source">A 
8950: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
8960: 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61 6c 73  ing true or fals
8970: 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  e</param>..    /
8980: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65  // <returns></re
8990: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
89a0: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f  <remarks>..    /
89b0: 2f 2f 20 22 79 65 73 22 2c 20 22 6e 6f 22 2c 20  // "yes", "no", 
89c0: 22 79 22 2c 20 22 6e 22 2c 20 22 30 22 2c 20 22  "y", "n", "0", "
89d0: 31 22 2c 20 22 6f 6e 22 2c 20 22 6f 66 66 22 20  1", "on", "off" 
89e0: 61 73 20 77 65 6c 6c 20 61 73 20 42 6f 6f 6c 65  as well as Boole
89f0: 61 6e 2e 46 61 6c 73 65 53 74 72 69 6e 67 20 61  an.FalseString a
8a00: 6e 64 20 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53  nd Boolean.TrueS
8a10: 74 72 69 6e 67 20 77 69 6c 6c 20 61 6c 6c 20 62  tring will all b
8a20: 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 76 65  e..    /// conve
8a30: 72 74 65 64 20 74 6f 20 61 20 70 72 6f 70 65 72  rted to a proper
8a40: 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 2e 0d   boolean value..
8a50: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72  .    /// </remar
8a60: 6b 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ks>..    public 
8a70: 73 74 61 74 69 63 20 62 6f 6f 6c 20 54 6f 42 6f  static bool ToBo
8a80: 6f 6c 65 61 6e 28 73 74 72 69 6e 67 20 73 6f 75  olean(string sou
8a90: 72 63 65 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  rce)..    {..   
8aa0: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 43 6f     if (String.Co
8ab0: 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20 62 6f  mpare(source, bo
8ac0: 6f 6c 2e 54 72 75 65 53 74 72 69 6e 67 2c 20 53  ol.TrueString, S
8ad0: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
8ae0: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
8af0: 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20  e) == 0) return 
8b00: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 65 6c 73  true;..      els
8b10: 65 20 69 66 20 28 53 74 72 69 6e 67 2e 43 6f 6d  e if (String.Com
8b20: 70 61 72 65 28 73 6f 75 72 63 65 2c 20 62 6f 6f  pare(source, boo
8b30: 6c 2e 46 61 6c 73 65 53 74 72 69 6e 67 2c 20 53  l.FalseString, S
8b40: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
8b50: 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
8b60: 65 29 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20  e) == 0) return 
8b70: 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
8b80: 73 77 69 74 63 68 28 73 6f 75 72 63 65 2e 54 6f  switch(source.To
8b90: 4c 6f 77 65 72 28 43 75 6c 74 75 72 65 49 6e 66  Lower(CultureInf
8ba0: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
8bb0: 72 65 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  re))..      {.. 
8bc0: 20 20 20 20 20 20 20 63 61 73 65 20 22 79 65 73         case "yes
8bd0: 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65  ":..        case
8be0: 20 22 79 22 3a 0d 0a 20 20 20 20 20 20 20 20 63   "y":..        c
8bf0: 61 73 65 20 22 31 22 3a 0d 0a 20 20 20 20 20 20  ase "1":..      
8c00: 20 20 63 61 73 65 20 22 6f 6e 22 3a 0d 0a 20 20    case "on":..  
8c10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
8c20: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 63 61  rue;..        ca
8c30: 73 65 20 22 6e 6f 22 3a 0d 0a 20 20 20 20 20 20  se "no":..      
8c40: 20 20 63 61 73 65 20 22 6e 22 3a 0d 0a 20 20 20    case "n":..   
8c50: 20 20 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a       case "0":..
8c60: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6f 66          case "of
8c70: 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  f":..          r
8c80: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
8c90: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0d 0a        default:..
8ca0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
8cb0: 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78 63 65  new ArgumentExce
8cc0: 70 74 69 6f 6e 28 22 73 6f 75 72 63 65 22 29 3b  ption("source");
8cd0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d  ..      }..    }
8ce0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
8cf0: 54 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e 73  Type Conversions
8d00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
8d10: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
8d20: 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54 79  verts a SQLiteTy
8d30: 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79 70  pe to a .NET Typ
8d40: 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f  e object..    //
8d50: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
8d60: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
8d70: 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74 65  e="t">The SQLite
8d80: 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  Type to convert<
8d90: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
8da0: 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e   <returns>Return
8db0: 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f 62  s a .NET Type ob
8dc0: 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ject</returns>..
8dd0: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
8de0: 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65 54  tic Type SQLiteT
8df0: 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74 65  ypeToType(SQLite
8e00: 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d 0a  Type t)..    {..
8e10: 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70 65        if (t.Type
8e20: 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63   == DbType.Objec
8e30: 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  t)..        retu
8e40: 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79  rn _affinitytoty
8e50: 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e 69  pe[(int)t.Affini
8e60: 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65  ty];..      else
8e70: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
8e80: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 44   SQLiteConvert.D
8e90: 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54 79  bTypeToType(t.Ty
8ea0: 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  pe);..    }.... 
8eb0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
8ec0: 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e 69  c Type[] _affini
8ed0: 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20 20  tytotype = {..  
8ee0: 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63      typeof(objec
8ef0: 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74 69  t),   // Uniniti
8f00: 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20 20  alized (0)..    
8f10: 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29 2c    typeof(Int64),
8f20: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 29      // Int64 (1)
8f30: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44  ..      typeof(D
8f40: 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75  ouble),   // Dou
8f50: 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74  ble (2)..      t
8f60: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
8f70: 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20 20   // Text (3)..  
8f80: 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b      typeof(byte[
8f90: 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28 34  ]),   // Blob (4
8fa0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
8fb0: 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e 75  object),   // Nu
8fc0: 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79  ll (5)..      ty
8fd0: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20  peof(DateTime), 
8fe0: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 30 29  // DateTime (10)
8ff0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f  ..      typeof(o
9000: 62 6a 65 63 74 29 20 20 20 20 2f 2f 20 4e 6f 6e  bject)    // Non
9010: 65 20 28 31 31 29 0d 0a 20 20 20 20 7d 3b 0d 0a  e (11)..    };..
9020: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
9030: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72  ry>..    /// For
9040: 20 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e 73   a given intrins
9050: 69 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20  ic type, return 
9060: 61 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f 2f  a DbType..    //
9070: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
9080: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
9090: 65 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74 69  e="typ">The nati
90a0: 76 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76 65  ve type to conve
90b0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
90c0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
90d0: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 28   corresponding (
90e0: 63 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20 44  closest match) D
90f0: 62 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d  bType</returns>.
9100: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
9110: 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65  atic DbType Type
9120: 54 6f 44 62 54 79 70 65 28 54 79 70 65 20 74 79  ToDbType(Type ty
9130: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
9140: 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54   TypeCode tc = T
9150: 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28  ype.GetTypeCode(
9160: 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20  typ);..      if 
9170: 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e  (tc == TypeCode.
9180: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b  Object)..      {
9190: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  ..        if (ty
91a0: 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65  p == typeof(byte
91b0: 5b 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54 79  [])) return DbTy
91c0: 70 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20 20  pe.Binary;..    
91d0: 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74      if (typ == t
91e0: 79 70 65 6f 66 28 47 75 69 64 29 29 20 72 65 74  ypeof(Guid)) ret
91f0: 75 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64 3b  urn DbType.Guid;
9200: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
9210: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b 0d   DbType.String;.
9220: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20  .      }..      
9230: 72 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64 62  return _typetodb
9240: 74 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a  type[(int)tc];..
9250: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69      }....    pri
9260: 76 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79  vate static DbTy
9270: 70 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74 79  pe[] _typetodbty
9280: 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 62  pe = {..      Db
9290: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f  Type.Object,   /
92a0: 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20 20  / Empty (0)..   
92b0: 20 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79     DbType.Binary
92c0: 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31  ,   // Object (1
92d0: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
92e0: 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 44 42 4e  Object,   // DBN
92f0: 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 44  ull (2)..      D
9300: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 20  bType.Boolean,  
9310: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a  // Boolean (3)..
9320: 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 42 79        DbType.SBy
9330: 74 65 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28  te,    // Char (
9340: 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  4)..      DbType
9350: 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 53 42  .SByte,    // SB
9360: 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44  yte (5)..      D
9370: 62 54 79 70 65 2e 42 79 74 65 2c 20 20 20 20 20  bType.Byte,     
9380: 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20  // Byte (6)..   
9390: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c     DbType.Int16,
93a0: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29      // Int16 (7)
93b0: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55  ..      DbType.U
93c0: 49 6e 74 31 36 2c 20 20 20 2f 2f 20 55 49 6e 74  Int16,   // UInt
93d0: 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 44 62  16 (8)..      Db
93e0: 54 79 70 65 2e 49 6e 74 33 32 2c 20 20 20 20 2f  Type.Int32,    /
93f0: 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20  / Int32 (9)..   
9400: 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32     DbType.UInt32
9410: 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31  ,   // UInt32 (1
9420: 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  0)..      DbType
9430: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e  .Int64,    // In
9440: 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20  t64 (11)..      
9450: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 20  DbType.UInt64,  
9460: 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d   // UInt64 (12).
9470: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 69  .      DbType.Si
9480: 6e 67 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c  ngle,   // Singl
9490: 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 44 62  e (13)..      Db
94a0: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 20 20 2f  Type.Double,   /
94b0: 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20  / Double (14).. 
94c0: 20 20 20 20 20 44 62 54 79 70 65 2e 44 65 63 69       DbType.Deci
94d0: 6d 61 6c 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c  mal,  // Decimal
94e0: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 62 54   (15)..      DbT
94f0: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 2f 2f  ype.DateTime, //
9500: 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d 0a   DateTime (16)..
9510: 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a        DbType.Obj
9520: 65 63 74 2c 20 20 20 2f 2f 20 3f 3f 20 28 31 37  ect,   // ?? (17
9530: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e  )..      DbType.
9540: 53 74 72 69 6e 67 20 20 20 20 2f 2f 20 53 74 72  String    // Str
9550: 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b  ing (18)..    };
9560: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
9570: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52  mary>..    /// R
9580: 65 74 75 72 6e 73 20 74 68 65 20 43 6f 6c 75 6d  eturns the Colum
9590: 6e 53 69 7a 65 20 66 6f 72 20 74 68 65 20 67 69  nSize for the gi
95a0: 76 65 6e 20 44 62 54 79 70 65 0d 0a 20 20 20 20  ven DbType..    
95b0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
95c0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
95d0: 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62  ame="typ">The Db
95e0: 54 79 70 65 20 74 6f 20 67 65 74 20 74 68 65 20  Type to get the 
95f0: 73 69 7a 65 20 6f 66 3c 2f 70 61 72 61 6d 3e 0d  size of</param>.
9600: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
9610: 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  s></returns>..  
9620: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9630: 63 20 69 6e 74 20 44 62 54 79 70 65 54 6f 43 6f  c int DbTypeToCo
9640: 6c 75 6d 6e 53 69 7a 65 28 44 62 54 79 70 65 20  lumnSize(DbType 
9650: 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  typ)..    {..   
9660: 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70     return _dbtyp
9670: 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 5b 28 69  etocolumnsize[(i
9680: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d  nt)typ];..    }.
9690: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
96a0: 74 61 74 69 63 20 69 6e 74 5b 5d 20 5f 64 62 74  tatic int[] _dbt
96b0: 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 20  ypetocolumnsize 
96c0: 3d 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  = {..      int.M
96d0: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69  axValue, // Ansi
96e0: 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20  String (0)..    
96f0: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
9700: 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20  // Binary (1).. 
9710: 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20 20       1,         
9720: 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a     // Byte (2)..
9730: 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20        1,        
9740: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28      // Boolean (
9750: 33 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  3)..      8,    
9760: 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72 65          // Curre
9770: 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 38  ncy (4)..      8
9780: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
9790: 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20  Date (5)..      
97a0: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
97b0: 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20   DateTime (6).. 
97c0: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
97d0: 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37     // Decimal (7
97e0: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20  )..      8,     
97f0: 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c 65         // Double
9800: 20 28 38 29 0d 0a 20 20 20 20 20 20 31 36 2c 20   (8)..      16, 
9810: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75 69            // Gui
9820: 64 20 28 39 29 0d 0a 20 20 20 20 20 20 32 2c 20  d (9)..      2, 
9830: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e             // In
9840: 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20  t16 (10)..      
9850: 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  4,            //
9860: 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20 20   Int32 (11)..   
9870: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
9880: 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a   // Int64 (12)..
9890: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c        int.MaxVal
98a0: 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31  ue, // Object (1
98b0: 33 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20  3)..      1,    
98c0: 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74 65          // SByte
98d0: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 34 2c 20   (14)..      4, 
98e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 69             // Si
98f0: 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20 20  ngle (15)..     
9900: 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f   int.MaxValue, /
9910: 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20  / String (16).. 
9920: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
9930: 20 20 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d     // Time (17).
9940: 0a 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20  .      2,       
9950: 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28       // UInt16 (
9960: 31 38 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20  18)..      4,   
9970: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
9980: 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20 38  32 (19)..      8
9990: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
99a0: 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20  UInt64 (20)..   
99b0: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20     8,           
99c0: 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28   // VarNumeric (
99d0: 32 31 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d  21)..      int.M
99e0: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69  axValue, // Ansi
99f0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74  StringFixedLengt
9a00: 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 69 6e  h (22)..      in
9a10: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 53  t.MaxValue, // S
9a20: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68  tringFixedLength
9a30: 20 28 32 33 29 0d 0a 20 20 20 20 20 20 69 6e 74   (23)..      int
9a40: 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f  .MaxValue, // ??
9a50: 20 28 32 34 29 0d 0a 20 20 20 20 20 20 69 6e 74   (24)..      int
9a60: 2e 4d 61 78 56 61 6c 75 65 20 20 2f 2f 20 58 6d  .MaxValue  // Xm
9a70: 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a  l (25)..    };..
9a80: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
9a90: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62 54  tatic object DbT
9aa0: 79 70 65 54 6f 4e 75 6d 65 72 69 63 50 72 65 63  ypeToNumericPrec
9ab0: 69 73 69 6f 6e 28 44 62 54 79 70 65 20 74 79 70  ision(DbType typ
9ac0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
9ad0: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f  return _dbtypeto
9ae0: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e  numericprecision
9af0: 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20  [(int)typ];..   
9b00: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74   }....    privat
9b10: 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 5b  e static object[
9b20: 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72  ] _dbtypetonumer
9b30: 69 63 70 72 65 63 69 73 69 6f 6e 20 3d 20 7b 0d  icprecision = {.
9b40: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
9b50: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69  lue, // AnsiStri
9b60: 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42  ng (0)..      DB
9b70: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42  Null.Value, // B
9b80: 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20  inary (1)..     
9b90: 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   3,            /
9ba0: 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20  / Byte (2)..    
9bb0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
9bc0: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a  // Boolean (3)..
9bd0: 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20 20        19,       
9be0: 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20      // Currency 
9bf0: 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (4)..      DBNul
9c00: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
9c10: 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (5)..      DBNu
9c20: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
9c30: 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20  eTime (6)..     
9c40: 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f   53,           /
9c50: 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20  / Decimal (7).. 
9c60: 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20       53,        
9c70: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29     // Double (8)
9c80: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
9c90: 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39  alue, // Guid (9
9ca0: 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20  )..      5,     
9cb0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20         // Int16 
9cc0: 28 31 30 29 0d 0a 20 20 20 20 20 20 31 30 2c 20  (10)..      10, 
9cd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
9ce0: 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 31  32 (11)..      1
9cf0: 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  9,           // 
9d00: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20  Int64 (12)..    
9d10: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
9d20: 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a  // Object (13)..
9d30: 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20        3,        
9d40: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34      // SByte (14
9d50: 29 0d 0a 20 20 20 20 20 20 32 34 2c 20 20 20 20  )..      24,    
9d60: 20 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65         // Single
9d70: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e   (15)..      DBN
9d80: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74  ull.Value, // St
9d90: 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20  ring (16)..     
9da0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
9db0: 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20  / Time (17)..   
9dc0: 20 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20     5,           
9dd0: 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d   // UInt16 (18).
9de0: 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20 20  .      10,      
9df0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28       // UInt32 (
9e00: 31 39 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20  19)..      19,  
9e10: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
9e20: 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 35  64 (20)..      5
9e30: 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  3,           // 
9e40: 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d  VarNumeric (21).
9e50: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
9e60: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69  lue, // AnsiStri
9e70: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
9e80: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
9e90: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  .Value, // Strin
9ea0: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33  gFixedLength (23
9eb0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
9ec0: 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34  Value, // ?? (24
9ed0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
9ee0: 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32  Value  // Xml (2
9ef0: 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  5)..    };....  
9f00: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
9f10: 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54  c object DbTypeT
9f20: 6f 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44 62  oNumericScale(Db
9f30: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
9f40: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f  ..      return _
9f50: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73  dbtypetonumerics
9f60: 63 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  cale[(int)typ];.
9f70: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
9f80: 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a  ivate static obj
9f90: 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e  ect[] _dbtypeton
9fa0: 75 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d  umericscale = {.
9fb0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
9fc0: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69  lue, // AnsiStri
9fd0: 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42  ng (0)..      DB
9fe0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42  Null.Value, // B
9ff0: 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20  inary (1)..     
a000: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   0,            /
a010: 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20  / Byte (2)..    
a020: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
a030: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a  // Boolean (3)..
a040: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20        4,        
a050: 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20      // Currency 
a060: 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (4)..      DBNul
a070: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65  l.Value, // Date
a080: 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (5)..      DBNu
a090: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74  ll.Value, // Dat
a0a0: 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20  eTime (6)..     
a0b0: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
a0c0: 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20  / Decimal (7).. 
a0d0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
a0e0: 65 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29  e, // Double (8)
a0f0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
a100: 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39  alue, // Guid (9
a110: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
a120: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20         // Int16 
a130: 28 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (10)..      0,  
a140: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
a150: 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 30  32 (11)..      0
a160: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
a170: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20  Int64 (12)..    
a180: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
a190: 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a  // Object (13)..
a1a0: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
a1b0: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34      // SByte (14
a1c0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
a1d0: 56 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65  Value, // Single
a1e0: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e   (15)..      DBN
a1f0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74  ull.Value, // St
a200: 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20  ring (16)..     
a210: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
a220: 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20  / Time (17)..   
a230: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20     0,           
a240: 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d   // UInt16 (18).
a250: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20  .      0,       
a260: 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28       // UInt32 (
a270: 31 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20  19)..      0,   
a280: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74           // UInt
a290: 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 30  64 (20)..      0
a2a0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ,            // 
a2b0: 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d  VarNumeric (21).
a2c0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
a2d0: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69  lue, // AnsiStri
a2e0: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32  ngFixedLength (2
a2f0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  2)..      DBNull
a300: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  .Value, // Strin
a310: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33  gFixedLength (23
a320: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
a330: 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34  Value, // ?? (24
a340: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
a350: 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32  Value  // Xml (2
a360: 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  5)..    };....  
a370: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
a380: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
a390: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
a3a0: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
a3b0: 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68  me to be used wh
a3c0: 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65  en a..    /// pe
a3d0: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
a3e0: 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  ue is not availa
a3f0: 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ble...    /// </
a400: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
a410: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
a420: 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
a430: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
a440: 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ame to use...   
a450: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
a460: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
a470: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44 65  tic string GetDe
a480: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 29 0d  faultTypeName().
a490: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
a4a0: 73 74 72 69 6e 67 20 76 61 6c 75 65 20 3d 20 55  string value = U
a4b0: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
a4c0: 64 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c  ds.GetSettingVal
a4d0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
a4e0: 20 22 55 73 65 5f 53 51 4c 69 74 65 43 6f 6e 76   "Use_SQLiteConv
a4f0: 65 72 74 5f 44 65 66 61 75 6c 74 54 79 70 65 4e  ert_DefaultTypeN
a500: 61 6d 65 22 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a  ame", null);....
a510: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
a520: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
a530: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46          return F
a540: 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 54 79  allbackDefaultTy
a550: 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  peName;....     
a560: 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b     return value;
a570: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
a580: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
a590: 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
a5a0: 20 74 68 65 20 74 79 70 65 20 6e 61 6d 65 20 66   the type name f
a5b0: 6f 72 20 74 68 65 20 67 69 76 65 6e 20 64 61 74  or the given dat
a5c0: 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65  abase value type
a5d0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
a5e0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
a5f0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
a600: 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e  ection">The conn
a610: 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66  ection context f
a620: 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d  or custom type m
a630: 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e  appings, if any.
a640: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
a650: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64  / <param name="d
a660: 62 54 79 70 65 22 3e 54 68 65 20 64 61 74 61 62  bType">The datab
a670: 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e 3c  ase value type.<
a680: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
a690: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c   <param name="fl
a6a0: 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20 61  ags">The flags a
a6b0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
a6c0: 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65 63  he parent connec
a6d0: 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70 61  tion object.</pa
a6e0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
a6f0: 65 74 75 72 6e 73 3e 54 68 65 20 74 79 70 65 20  eturns>The type 
a700: 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74 79  name or an empty
a710: 20 73 74 72 69 6e 67 20 69 66 20 69 74 20 63 61   string if it ca
a720: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e  nnot be determin
a730: 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ed.</returns>.. 
a740: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
a750: 69 63 20 73 74 72 69 6e 67 20 44 62 54 79 70 65  ic string DbType
a760: 54 6f 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20 20  ToTypeName(..   
a770: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
a780: 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
a790: 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  ,..        DbTyp
a7a0: 65 20 64 62 54 79 70 65 2c 0d 0a 20 20 20 20 20  e dbType,..     
a7b0: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
a7c0: 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a  ionFlags flags..
a7d0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b          )..    {
a7e0: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
a7f0: 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65   defaultTypeName
a800: 20 3d 20 47 65 74 44 65 66 61 75 6c 74 54 79 70   = GetDefaultTyp
a810: 65 4e 61 6d 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  eName();....    
a820: 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
a830: 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on != null)..   
a840: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a850: 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e      flags |= con
a860: 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a  nection.Flags;..
a870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
a880: 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74   ((flags & SQLit
a890: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
a8a0: 2e 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79  .UseConnectionTy
a8b0: 70 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f  pes) == SQLiteCo
a8c0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73  nnectionFlags.Us
a8d0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73  eConnectionTypes
a8e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
a8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a900: 20 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61    SQLiteDbTypeMa
a910: 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65  p connectionType
a920: 4e 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69  Names = connecti
a930: 6f 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a  on._typeNames;..
a940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a950: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
a960: 54 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c  TypeNames != nul
a970: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
a980: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a990: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
a9a0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76  eDbTypeMapping v
a9b0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
a9d0: 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e  (connectionTypeN
a9e0: 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ames.TryGetValue
a9f0: 28 64 62 54 79 70 65 2c 20 6f 75 74 20 76 61 6c  (dbType, out val
aa00: 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
aa10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
aa20: 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e  turn value.typeN
aa30: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
aa40: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
aa50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
aa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
aa70: 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  / NOTE: Use the 
aa80: 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73 65  default database
aa90: 20 74 79 70 65 20 6e 61 6d 65 20 66 6f 72 20 74   type name for t
aaa0: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a  he connection...
aab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aac0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
aad0: 20 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e      defaultTypeN
aae0: 61 6d 65 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e  ame = connection
aaf0: 2e 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65  .DefaultTypeName
ab00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
ab10: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
ab20: 20 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67         if ((flag
ab30: 73 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s & SQLiteConnec
ab40: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62  tionFlags.NoGlob
ab50: 61 6c 54 79 70 65 73 29 20 3d 3d 20 53 51 4c 69  alTypes) == SQLi
ab60: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67  teConnectionFlag
ab70: 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29  s.NoGlobalTypes)
ab80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
ab90: 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65  turn defaultType
aba0: 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
abb0: 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74   lock (_syncRoot
abc0: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
abd0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 5f 74            if (_t
abe0: 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c  ypeNames == null
abf0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ac00: 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20     _typeNames = 
ac10: 47 65 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d  GetSQLiteDbTypeM
ac20: 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ap();....       
ac30: 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
ac40: 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d  eMapping value;.
ac50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
ac60: 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72  f (_typeNames.Tr
ac70: 79 47 65 74 56 61 6c 75 65 28 64 62 54 79 70 65  yGetValue(dbType
ac80: 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
ac90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
aca0: 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 79 70 65  eturn value.type
acb0: 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d  Name;..        }
acc0: 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d  ....#if !NET_COM
acd0: 50 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45  PACT_20 && TRACE
ace0: 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20  _WARNING..      
acf0: 20 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53    if ((flags & S
ad00: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
ad10: 6c 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e  lags.TraceWarnin
ad20: 67 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  g) == SQLiteConn
ad30: 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63  ectionFlags.Trac
ad40: 65 57 61 72 6e 69 6e 67 29 0d 0a 20 20 20 20 20  eWarning)..     
ad50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
ad60: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
ad70: 65 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  e(String.Format(
ad80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad90: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75    CultureInfo.Cu
ada0: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20  rrentCulture,.. 
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
adc0: 57 41 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61  WARNING: Type ma
add0: 70 70 69 6e 67 20 66 61 69 6c 65 64 2c 20 72 65  pping failed, re
ade0: 74 75 72 6e 69 6e 67 20 64 65 66 61 75 6c 74 20  turning default 
adf0: 6e 61 6d 65 20 5c 22 7b 30 7d 5c 22 20 66 6f 72  name \"{0}\" for
ae00: 20 74 79 70 65 20 7b 31 7d 2e 22 2c 0d 0a 20 20   type {1}.",..  
ae10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
ae20: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 2c 20 64  faultTypeName, d
ae30: 62 54 79 70 65 29 29 3b 0d 0a 20 20 20 20 20 20  bType));..      
ae40: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20    }..#endif.... 
ae50: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65         return de
ae60: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a  faultTypeName;..
ae70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
ae80: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
ae90: 2f 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 62  /// Convert a Db
aea0: 54 79 70 65 20 74 6f 20 61 20 54 79 70 65 0d 0a  Type to a Type..
aeb0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
aec0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
aed0: 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68  am name="typ">Th
aee0: 65 20 44 62 54 79 70 65 20 74 6f 20 63 6f 6e 76  e DbType to conv
aef0: 65 72 74 20 66 72 6f 6d 3c 2f 70 61 72 61 6d 3e  ert from</param>
af00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
af10: 6e 73 3e 54 68 65 20 63 6c 6f 73 65 73 74 2d 6d  ns>The closest-m
af20: 61 74 63 68 20 2e 4e 45 54 20 74 79 70 65 3c 2f  atch .NET type</
af30: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e  returns>..    in
af40: 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79  ternal static Ty
af50: 70 65 20 44 62 54 79 70 65 54 6f 54 79 70 65 28  pe DbTypeToType(
af60: 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  DbType typ)..   
af70: 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   {..      return
af80: 20 5f 64 62 74 79 70 65 54 6f 54 79 70 65 5b 28   _dbtypeToType[(
af90: 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d  int)typ];..    }
afa0: 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  ....    private 
afb0: 73 74 61 74 69 63 20 54 79 70 65 5b 5d 20 5f 64  static Type[] _d
afc0: 62 74 79 70 65 54 6f 54 79 70 65 20 3d 20 7b 0d  btypeToType = {.
afd0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74  .      typeof(st
afe0: 72 69 6e 67 29 2c 20 20 20 2f 2f 20 41 6e 73 69  ring),   // Ansi
aff0: 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20  String (0)..    
b000: 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29    typeof(byte[])
b010: 2c 20 20 20 2f 2f 20 42 69 6e 61 72 79 20 28 31  ,   // Binary (1
b020: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b030: 62 79 74 65 29 2c 20 20 20 20 20 2f 2f 20 42 79  byte),     // By
b040: 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79  te (2)..      ty
b050: 70 65 6f 66 28 62 6f 6f 6c 29 2c 20 20 20 20 20  peof(bool),     
b060: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a  // Boolean (3)..
b070: 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63        typeof(dec
b080: 69 6d 61 6c 29 2c 20 20 2f 2f 20 43 75 72 72 65  imal),  // Curre
b090: 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 74  ncy (4)..      t
b0a0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
b0b0: 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a 20 20   // Date (5)..  
b0c0: 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54      typeof(DateT
b0d0: 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69 6d  ime), // DateTim
b0e0: 65 20 28 36 29 0d 0a 20 20 20 20 20 20 74 79 70  e (6)..      typ
b0f0: 65 6f 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 2f  eof(decimal),  /
b100: 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20  / Decimal (7).. 
b110: 20 20 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62       typeof(doub
b120: 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65  le),   // Double
b130: 20 28 38 29 0d 0a 20 20 20 20 20 20 74 79 70 65   (8)..      type
b140: 6f 66 28 47 75 69 64 29 2c 20 20 20 20 20 2f 2f  of(Guid),     //
b150: 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20 20 20   Guid (9)..     
b160: 20 74 79 70 65 6f 66 28 49 6e 74 31 36 29 2c 20   typeof(Int16), 
b170: 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29     // Int16 (10)
b180: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 49  ..      typeof(I
b190: 6e 74 33 32 29 2c 20 20 20 20 2f 2f 20 49 6e 74  nt32),    // Int
b1a0: 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 74  32 (11)..      t
b1b0: 79 70 65 6f 66 28 49 6e 74 36 34 29 2c 20 20 20  ypeof(Int64),   
b1c0: 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a   // Int64 (12)..
b1d0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a        typeof(obj
b1e0: 65 63 74 29 2c 20 20 20 2f 2f 20 4f 62 6a 65 63  ect),   // Objec
b1f0: 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 74 79  t (13)..      ty
b200: 70 65 6f 66 28 73 62 79 74 65 29 2c 20 20 20 20  peof(sbyte),    
b210: 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20  // SByte (14).. 
b220: 20 20 20 20 20 74 79 70 65 6f 66 28 66 6c 6f 61       typeof(floa
b230: 74 29 2c 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65  t),    // Single
b240: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 74 79 70   (15)..      typ
b250: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
b260: 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20  / String (16).. 
b270: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
b280: 54 69 6d 65 29 2c 20 2f 2f 20 54 69 6d 65 20 28  Time), // Time (
b290: 31 37 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  17)..      typeo
b2a0: 66 28 55 49 6e 74 31 36 29 2c 20 20 20 2f 2f 20  f(UInt16),   // 
b2b0: 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20  UInt16 (18)..   
b2c0: 20 20 20 74 79 70 65 6f 66 28 55 49 6e 74 33 32     typeof(UInt32
b2d0: 29 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28  ),   // UInt32 (
b2e0: 31 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  19)..      typeo
b2f0: 66 28 55 49 6e 74 36 34 29 2c 20 20 20 2f 2f 20  f(UInt64),   // 
b300: 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20  UInt64 (20)..   
b310: 20 20 20 74 79 70 65 6f 66 28 64 6f 75 62 6c 65     typeof(double
b320: 29 2c 20 20 20 2f 2f 20 56 61 72 4e 75 6d 65 72  ),   // VarNumer
b330: 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20 20 74  ic (21)..      t
b340: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20  ypeof(string),  
b350: 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69   // AnsiStringFi
b360: 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a  xedLength (22)..
b370: 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72        typeof(str
b380: 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 69 6e  ing),   // Strin
b390: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33  gFixedLength (23
b3a0: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28  )..      typeof(
b3b0: 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 3f 3f  string),   // ??
b3c0: 20 28 32 34 29 0d 0a 20 20 20 20 20 20 74 79 70   (24)..      typ
b3d0: 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 2f  eof(string),   /
b3e0: 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20  / Xml (25)..    
b3f0: 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  };....    /// <s
b400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
b410: 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74 79 70   For a given typ
b420: 65 2c 20 72 65 74 75 72 6e 20 74 68 65 20 63 6c  e, return the cl
b430: 6f 73 65 73 74 2d 6d 61 74 63 68 20 53 51 4c 69  osest-match SQLi
b440: 74 65 20 54 79 70 65 41 66 66 69 6e 69 74 79 2c  te TypeAffinity,
b450: 20 77 68 69 63 68 20 6f 6e 6c 79 20 75 6e 64 65   which only unde
b460: 72 73 74 61 6e 64 73 20 61 20 76 65 72 79 20 6c  rstands a very l
b470: 69 6d 69 74 65 64 20 73 75 62 73 65 74 20 6f 66  imited subset of
b480: 20 74 79 70 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f   types...    ///
b490: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
b4a0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
b4b0: 3d 22 74 79 70 22 3e 54 68 65 20 74 79 70 65 20  ="typ">The type 
b4c0: 74 6f 20 65 76 61 6c 75 61 74 65 3c 2f 70 61 72  to evaluate</par
b4d0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
b4e0: 74 75 72 6e 73 3e 54 68 65 20 53 51 4c 69 74 65  turns>The SQLite
b4f0: 20 74 79 70 65 20 61 66 66 69 6e 69 74 79 20 66   type affinity f
b500: 6f 72 20 74 68 61 74 20 74 79 70 65 2e 3c 2f 72  or that type.</r
b510: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
b520: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 54 79 70  ernal static Typ
b530: 65 41 66 66 69 6e 69 74 79 20 54 79 70 65 54 6f  eAffinity TypeTo
b540: 41 66 66 69 6e 69 74 79 28 54 79 70 65 20 74 79  Affinity(Type ty
b550: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  p)..    {..     
b560: 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54   TypeCode tc = T
b570: 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28  ype.GetTypeCode(
b580: 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20  typ);..      if 
b590: 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e  (tc == TypeCode.
b5a0: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b  Object)..      {
b5b0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79  ..        if (ty
b5c0: 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65  p == typeof(byte
b5d0: 5b 5d 29 20 7c 7c 20 74 79 70 20 3d 3d 20 74 79  []) || typ == ty
b5e0: 70 65 6f 66 28 47 75 69 64 29 29 0d 0a 20 20 20  peof(Guid))..   
b5f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 79         return Ty
b600: 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3b  peAffinity.Blob;
b610: 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a  ..        else..
b620: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
b630: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65   TypeAffinity.Te
b640: 78 74 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20  xt;..      }..  
b650: 20 20 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65      return _type
b660: 63 6f 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28  codeAffinities[(
b670: 69 6e 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d  int)tc];..    }.
b680: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  ...    private s
b690: 74 61 74 69 63 20 54 79 70 65 41 66 66 69 6e 69  tatic TypeAffini
b6a0: 74 79 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66  ty[] _typecodeAf
b6b0: 66 69 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20  finities = {..  
b6c0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
b6d0: 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d  .Null,     // Em
b6e0: 70 74 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54  pty (0)..      T
b6f0: 79 70 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62  ypeAffinity.Blob
b700: 2c 20 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20  ,     // Object 
b710: 28 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  (1)..      TypeA
b720: 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20  ffinity.Null,   
b730: 20 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d    // DBNull (2).
b740: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
b750: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
b760: 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20   Boolean (3)..  
b770: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79      TypeAffinity
b780: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68  .Int64,    // Ch
b790: 61 72 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79  ar (4)..      Ty
b7a0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
b7b0: 2c 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35  ,    // SByte (5
b7c0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
b7d0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20  inity.Int64,    
b7e0: 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20  // Byte (6)..   
b7f0: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
b800: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74  Int64,    // Int
b810: 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79  16 (7)..      Ty
b820: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
b830: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28  ,    // UInt16 (
b840: 38 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66  8)..      TypeAf
b850: 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20  finity.Int64,   
b860: 20 2f 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20   // Int32 (9).. 
b870: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
b880: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55  y.Int64,    // U
b890: 49 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20  Int32 (10)..    
b8a0: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
b8b0: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36  nt64,    // Int6
b8c0: 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79  4 (11)..      Ty
b8d0: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34  peAffinity.Int64
b8e0: 2c 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28  ,    // UInt64 (
b8f0: 31 32 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  12)..      TypeA
b900: 66 66 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20  ffinity.Double, 
b910: 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29    // Single (13)
b920: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
b930: 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f  nity.Double,   /
b940: 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20  / Double (14).. 
b950: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
b960: 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44  y.Double,   // D
b970: 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20  ecimal (15)..   
b980: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
b990: 44 61 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74  DateTime, // Dat
b9a0: 65 54 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20  eTime (16)..    
b9b0: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e    TypeAffinity.N
b9c0: 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28  ull,     // ?? (
b9d0: 31 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41  17)..      TypeA
b9e0: 66 66 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20  ffinity.Text    
b9f0: 20 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29    // String (18)
ba00: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
ba10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
ba20: 20 20 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e     /// Builds an
ba30: 64 20 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20  d returns a map 
ba40: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64  containing the d
ba50: 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74  atabase column t
ba60: 79 70 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65  ypes..    /// re
ba70: 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73  cognized by this
ba80: 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20   provider...    
ba90: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
baa0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73      /// <returns
bab0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70  >..    /// A map
bac0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
bad0: 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20  database column 
bae0: 74 79 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64  types recognized
baf0: 20 62 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f   by this..    //
bb00: 2f 20 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20  / provider...   
bb10: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
bb20: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
bb30: 74 69 63 20 53 51 4c 69 74 65 44 62 54 79 70 65  tic SQLiteDbType
bb40: 4d 61 70 20 47 65 74 53 51 4c 69 74 65 44 62 54  Map GetSQLiteDbT
bb50: 79 70 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d  ypeMap()..    {.
bb60: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
bb70: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
bb80: 4d 61 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62  Map(new SQLiteDb
bb90: 54 79 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d  TypeMapping[] {.
bba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
bbb0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
bbc0: 70 69 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44  ping("BIGINT", D
bbd0: 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
bbe0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
bbf0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
bc00: 70 65 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49  peMapping("BIGUI
bc10: 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  NT", DbType.UInt
bc20: 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
bc30: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
bc40: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
bc50: 28 22 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70  ("BINARY", DbTyp
bc60: 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
bc70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
bc80: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
bc90: 61 70 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62  apping("BIT", Db
bca0: 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72  Type.Boolean, tr
bcb0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
bcc0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
bcd0: 70 65 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22  peMapping("BLOB"
bce0: 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c  , DbType.Binary,
bcf0: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
bd00: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
bd10: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f  bTypeMapping("BO
bd20: 4f 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c  OL", DbType.Bool
bd30: 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  ean, false),..  
bd40: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
bd50: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
bd60: 67 28 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54  g("BOOLEAN", DbT
bd70: 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c  ype.Boolean, fal
bd80: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
bd90: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
bda0: 70 65 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22  peMapping("CHAR"
bdb0: 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72  , DbType.AnsiStr
bdc0: 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20  ingFixedLength, 
bdd0: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
bde0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
bdf0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f  TypeMapping("CLO
be00: 42 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  B", DbType.Strin
be10: 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
be20: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
be30: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
be40: 22 43 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70  "COUNTER", DbTyp
be50: 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  e.Int64, false),
be60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
be70: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
be80: 70 70 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22  pping("CURRENCY"
be90: 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
bea0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
beb0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
bec0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
bed0: 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61  DATE", DbType.Da
bee0: 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
bef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
bf00: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
bf10: 70 69 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c  ping("DATETIME",
bf20: 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65   DbType.DateTime
bf30: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20  , true),..      
bf40: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
bf50: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44  DbTypeMapping("D
bf60: 45 43 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e  ECIMAL", DbType.
bf70: 44 65 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d  Decimal, true),.
bf80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
bf90: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
bfa0: 70 69 6e 67 28 22 44 4f 55 42 4c 45 22 2c 20 44  ping("DOUBLE", D
bfb0: 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61  bType.Double, fa
bfc0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
bfd0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
bfe0: 79 70 65 4d 61 70 70 69 6e 67 28 22 46 4c 4f 41  ypeMapping("FLOA
bff0: 54 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 62 6c  T", DbType.Doubl
c000: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  e, false),..    
c010: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c020: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c030: 22 47 45 4e 45 52 41 4c 22 2c 20 44 62 54 79 70  "GENERAL", DbTyp
c040: 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29  e.Binary, false)
c050: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c060: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c070: 61 70 70 69 6e 67 28 22 47 55 49 44 22 2c 20 44  apping("GUID", D
c080: 62 54 79 70 65 2e 47 75 69 64 2c 20 66 61 6c 73  bType.Guid, fals
c090: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c0a0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c0b0: 65 4d 61 70 70 69 6e 67 28 22 49 44 45 4e 54 49  eMapping("IDENTI
c0c0: 54 59 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36  TY", DbType.Int6
c0d0: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  4, false),..    
c0e0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c0f0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c100: 22 49 4d 41 47 45 22 2c 20 44 62 54 79 70 65 2e  "IMAGE", DbType.
c110: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
c120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c130: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c140: 70 69 6e 67 28 22 49 4e 54 22 2c 20 44 62 54 79  ping("INT", DbTy
c150: 70 65 2e 49 6e 74 33 32 2c 20 74 72 75 65 29 2c  pe.Int32, true),
c160: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c170: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c180: 70 70 69 6e 67 28 22 49 4e 54 38 22 2c 20 44 62  pping("INT8", Db
c190: 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73  Type.SByte, fals
c1a0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c1b0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c1c0: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 31 36 22  eMapping("INT16"
c1d0: 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20  , DbType.Int16, 
c1e0: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
c1f0: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
c200: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e  bTypeMapping("IN
c210: 54 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  T32", DbType.Int
c220: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
c230: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c240: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c250: 28 22 49 4e 54 36 34 22 2c 20 44 62 54 79 70 65  ("INT64", DbType
c260: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d  .Int64, false),.
c270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
c280: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
c290: 70 69 6e 67 28 22 49 4e 54 45 47 45 52 22 2c 20  ping("INTEGER", 
c2a0: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 74 72  DbType.Int64, tr
c2b0: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
c2c0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c2d0: 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47  peMapping("INTEG
c2e0: 45 52 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79  ER8", DbType.SBy
c2f0: 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  te, false),..   
c300: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c310: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c320: 28 22 49 4e 54 45 47 45 52 31 36 22 2c 20 44 62  ("INTEGER16", Db
c330: 54 79 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73  Type.Int16, fals
c340: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c350: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c360: 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45  eMapping("INTEGE
c370: 52 33 32 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  R32", DbType.Int
c380: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
c390: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c3a0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c3b0: 28 22 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62  ("INTEGER64", Db
c3c0: 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73  Type.Int64, fals
c3d0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c3e0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c3f0: 65 4d 61 70 70 69 6e 67 28 22 4c 4f 47 49 43 41  eMapping("LOGICA
c400: 4c 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65  L", DbType.Boole
c410: 61 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  an, false),..   
c420: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c430: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c440: 28 22 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e  ("LONG", DbType.
c450: 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
c460: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c470: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
c480: 69 6e 67 28 22 4c 4f 4e 47 43 48 41 52 22 2c 20  ing("LONGCHAR", 
c490: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66  DbType.String, f
c4a0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
c4b0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c4c0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e  TypeMapping("LON
c4d0: 47 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  GTEXT", DbType.S
c4e0: 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
c4f0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c500: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
c510: 69 6e 67 28 22 4c 4f 4e 47 56 41 52 43 48 41 52  ing("LONGVARCHAR
c520: 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67  ", DbType.String
c530: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
c540: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
c550: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
c560: 4d 45 4d 4f 22 2c 20 44 62 54 79 70 65 2e 53 74  MEMO", DbType.St
c570: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  ring, false),.. 
c580: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
c590: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
c5a0: 6e 67 28 22 4d 4f 4e 45 59 22 2c 20 44 62 54 79  ng("MONEY", DbTy
c5b0: 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73  pe.Decimal, fals
c5c0: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
c5d0: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
c5e0: 65 4d 61 70 70 69 6e 67 28 22 4e 43 48 41 52 22  eMapping("NCHAR"
c5f0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 46  , DbType.StringF
c600: 69 78 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65  ixedLength, true
c610: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
c620: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
c630: 4d 61 70 70 69 6e 67 28 22 4e 4f 54 45 22 2c 20  Mapping("NOTE", 
c640: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66  DbType.String, f
c650: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
c660: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c670: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 54 45  TypeMapping("NTE
c680: 58 54 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69  XT", DbType.Stri
c690: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
c6a0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
c6b0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
c6c0: 28 22 4e 55 4d 42 45 52 22 2c 20 44 62 54 79 70  ("NUMBER", DbTyp
c6d0: 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65  e.Decimal, false
c6e0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
c6f0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
c700: 4d 61 70 70 69 6e 67 28 22 4e 55 4d 45 52 49 43  Mapping("NUMERIC
c710: 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61  ", DbType.Decima
c720: 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  l, false),..    
c730: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c740: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c750: 22 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  "NVARCHAR", DbTy
c760: 70 65 2e 53 74 72 69 6e 67 2c 20 74 72 75 65 29  pe.String, true)
c770: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
c780: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
c790: 61 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a 45 43  apping("OLEOBJEC
c7a0: 54 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72  T", DbType.Binar
c7b0: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  y, false),..    
c7c0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
c7d0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
c7e0: 22 52 41 57 22 2c 20 44 62 54 79 70 65 2e 42 69  "RAW", DbType.Bi
c7f0: 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nary, false),.. 
c800: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
c810: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
c820: 6e 67 28 22 52 45 41 4c 22 2c 20 44 62 54 79 70  ng("REAL", DbTyp
c830: 65 2e 44 6f 75 62 6c 65 2c 20 74 72 75 65 29 2c  e.Double, true),
c840: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c850: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c860: 70 70 69 6e 67 28 22 53 49 4e 47 4c 45 22 2c 20  pping("SINGLE", 
c870: 44 62 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 74  DbType.Single, t
c880: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
c890: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
c8a0: 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c  ypeMapping("SMAL
c8b0: 4c 44 41 54 45 22 2c 20 44 62 54 79 70 65 2e 44  LDATE", DbType.D
c8c0: 61 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c  ateTime, false),
c8d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
c8e0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
c8f0: 70 70 69 6e 67 28 22 53 4d 41 4c 4c 49 4e 54 22  pping("SMALLINT"
c900: 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c 20  , DbType.Int16, 
c910: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
c920: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
c930: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
c940: 4c 4c 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e  LLUINT", DbType.
c950: 55 49 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a  UInt16, true),..
c960: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
c970: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
c980: 69 6e 67 28 22 53 54 52 49 4e 47 22 2c 20 44 62  ing("STRING", Db
c990: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c  Type.String, fal
c9a0: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
c9b0: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
c9c0: 70 65 4d 61 70 70 69 6e 67 28 22 54 45 58 54 22  peMapping("TEXT"
c9d0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
c9e0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
c9f0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ca00: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54  DbTypeMapping("T
ca10: 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74  IME", DbType.Dat
ca20: 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a  eTime, false),..
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
ca40: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
ca50: 69 6e 67 28 22 54 49 4d 45 53 54 41 4d 50 22 2c  ing("TIMESTAMP",
ca60: 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65   DbType.DateTime
ca70: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
ca80: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
ca90: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
caa0: 54 49 4e 59 49 4e 54 22 2c 20 44 62 54 79 70 65  TINYINT", DbType
cab0: 2e 42 79 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20  .Byte, true),.. 
cac0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
cad0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
cae0: 6e 67 28 22 54 49 4e 59 53 49 4e 54 22 2c 20 44  ng("TINYSINT", D
caf0: 62 54 79 70 65 2e 53 42 79 74 65 2c 20 74 72 75  bType.SByte, tru
cb00: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
cb10: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
cb20: 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 22 2c  eMapping("UINT",
cb30: 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20   DbType.UInt32, 
cb40: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
cb50: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
cb60: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e  TypeMapping("UIN
cb70: 54 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65  T8", DbType.Byte
cb80: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
cb90: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
cba0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
cbb0: 55 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e  UINT16", DbType.
cbc0: 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d  UInt16, false),.
cbd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cbe0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cbf0: 70 69 6e 67 28 22 55 49 4e 54 33 32 22 2c 20 44  ping("UINT32", D
cc00: 62 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 66 61  bType.UInt32, fa
cc10: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
cc20: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cc30: 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
cc40: 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  64", DbType.UInt
cc50: 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  64, false),..   
cc60: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cc70: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cc80: 28 22 55 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65  ("ULONG", DbType
cc90: 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c  .UInt64, false),
cca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
ccb0: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
ccc0: 70 70 69 6e 67 28 22 55 4e 49 51 55 45 49 44 45  pping("UNIQUEIDE
ccd0: 4e 54 49 46 49 45 52 22 2c 20 44 62 54 79 70 65  NTIFIER", DbType
cce0: 2e 47 75 69 64 2c 20 74 72 75 65 29 2c 0d 0a 20  .Guid, true),.. 
ccf0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
cd00: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
cd10: 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45  ng("UNSIGNEDINTE
cd20: 47 45 52 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  GER", DbType.UIn
cd30: 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  t64, true),..   
cd40: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cd50: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cd60: 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45  ("UNSIGNEDINTEGE
cd70: 52 38 22 2c 20 44 62 54 79 70 65 2e 42 79 74 65  R8", DbType.Byte
cd80: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
cd90: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
cda0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
cdb0: 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 31  UNSIGNEDINTEGER1
cdc0: 36 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 31  6", DbType.UInt1
cdd0: 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  6, false),..    
cde0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
cdf0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ce00: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52  "UNSIGNEDINTEGER
ce10: 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
ce20: 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
ce30: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
ce40: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
ce50: 28 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45  ("UNSIGNEDINTEGE
ce60: 52 36 34 22 2c 20 44 62 54 79 70 65 2e 55 49 6e  R64", DbType.UIn
ce70: 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  t64, false),..  
ce80: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
ce90: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
cea0: 67 28 22 56 41 52 42 49 4e 41 52 59 22 2c 20 44  g("VARBINARY", D
ceb0: 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61  bType.Binary, fa
cec0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
ced0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
cee0: 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
cef0: 48 41 52 22 2c 20 44 62 54 79 70 65 2e 41 6e 73  HAR", DbType.Ans
cf00: 69 53 74 72 69 6e 67 2c 20 74 72 75 65 29 2c 0d  iString, true),.
cf10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
cf20: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
cf30: 70 69 6e 67 28 22 56 41 52 43 48 41 52 32 22 2c  ping("VARCHAR2",
cf40: 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69   DbType.AnsiStri
cf50: 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ng, false),..   
cf60: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
cf70: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
cf80: 28 22 59 45 53 4e 4f 22 2c 20 44 62 54 79 70 65  ("YESNO", DbType
cf90: 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29  .Boolean, false)
cfa0: 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a 20  ..        });.. 
cfb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
cfc0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
cfd0: 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20 74 68  // Determines th
cfe0: 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65 20 63  e default <see c
cff0: 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f 3e 20  ref="DbType" /> 
d000: 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73 65 64  value to be used
d010: 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f   when a..    ///
d020: 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20   per-connection 
d030: 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61 76 61  value is not ava
d040: 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f  ilable...    ///
d050: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
d060: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
d070: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
d080: 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d 22 44  ult <see cref="D
d090: 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75 65 20  bType" /> value 
d0a0: 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f  to use...    ///
d0b0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20   </returns>..   
d0c0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
d0d0: 44 62 54 79 70 65 20 47 65 74 44 65 66 61 75 6c  DbType GetDefaul
d0e0: 74 44 62 54 79 70 65 28 29 0d 0a 20 20 20 20 7b  tDbType()..    {
d0f0: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
d100: 20 76 61 6c 75 65 20 3d 20 55 6e 73 61 66 65 4e   value = UnsafeN
d110: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74  ativeMethods.Get
d120: 53 65 74 74 69 6e 67 56 61 6c 75 65 28 0d 0a 20  SettingValue(.. 
d130: 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65 5f             "Use_
d140: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44 65  SQLiteConvert_De
d150: 66 61 75 6c 74 44 62 54 79 70 65 22 2c 20 6e 75  faultDbType", nu
d160: 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ll);....        
d170: 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
d180: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d190: 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44  return FallbackD
d1a0: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 0d  efaultDbType;...
d1b0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
d1c0: 65 6e 75 6d 56 61 6c 75 65 20 3d 20 53 51 4c 69  enumValue = SQLi
d1d0: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72 79  teConnection.Try
d1e0: 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20  ParseEnum(..    
d1f0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 44          typeof(D
d200: 62 54 79 70 65 29 2c 20 76 61 6c 75 65 2c 20 74  bType), value, t
d210: 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rue);....       
d220: 20 69 66 20 28 21 28 65 6e 75 6d 56 61 6c 75 65   if (!(enumValue
d230: 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20 20   is DbType))..  
d240: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d250: 20 46 61 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74   FallbackDefault
d260: 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
d270: 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
d280: 65 29 65 6e 75 6d 56 61 6c 75 65 3b 0d 0a 20 20  e)enumValue;..  
d290: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
d2a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d2b0: 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 74 79  / For a given ty
d2c0: 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20  pe name, return 
d2d0: 61 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20  a closest-match 
d2e0: 2e 4e 45 54 20 74 79 70 65 0d 0a 20 20 20 20 2f  .NET type..    /
d2f0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
d300: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
d310: 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
d320: 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  The connection c
d330: 6f 6e 74 65 78 74 20 66 6f 72 20 63 75 73 74 6f  ontext for custo
d340: 6d 20 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c  m type mappings,
d350: 20 69 66 20 61 6e 79 2e 3c 2f 70 61 72 61 6d 3e   if any.</param>
d360: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
d370: 20 6e 61 6d 65 3d 22 6e 61 6d 65 22 3e 54 68 65   name="name">The
d380: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 79 70   name of the typ
d390: 65 20 74 6f 20 6d 61 74 63 68 3c 2f 70 61 72 61  e to match</para
d3a0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
d3b0: 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e  am name="flags">
d3c0: 54 68 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69  The flags associ
d3d0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70 61  ated with the pa
d3e0: 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  rent connection 
d3f0: 6f 62 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d  object.</param>.
d400: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
d410: 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 79 70  s>The .NET DBTyp
d420: 65 20 74 68 65 20 74 65 78 74 20 65 76 61 6c 75  e the text evalu
d430: 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e  ates to.</return
d440: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  s>..    internal
d450: 20 73 74 61 74 69 63 20 44 62 54 79 70 65 20 54   static DbType T
d460: 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 65 28  ypeNameToDbType(
d470: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
d480: 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65  Connection conne
d490: 63 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ction,..        
d4a0: 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
d4b0: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
d4c0: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
d4d0: 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  s..        )..  
d4e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 62 54    {..        DbT
d4f0: 79 70 65 20 64 65 66 61 75 6c 74 44 62 54 79 70  ype defaultDbTyp
d500: 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62  e = GetDefaultDb
d510: 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Type();....     
d520: 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f     if (connectio
d530: 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  n != null)..    
d540: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d550: 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f 6e 6e     flags |= conn
d560: 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d  ection.Flags;...
d570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
d580: 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65  ((flags & SQLite
d590: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
d5a0: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  UseConnectionTyp
d5b0: 65 73 29 20 3d 3d 20 53 51 4c 69 74 65 43 6f 6e  es) == SQLiteCon
d5c0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65  nectionFlags.Use
d5d0: 43 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 73 29  ConnectionTypes)
d5e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d600: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
d610: 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e   connectionTypeN
d620: 61 6d 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f  ames = connectio
d630: 6e 2e 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d  n._typeNames;...
d640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d650: 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54   if (connectionT
d660: 79 70 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c  ypeNames != null
d670: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d690: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61            if (na
d6a0: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d6d0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
d6e0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20  teDbTypeMapping 
d6f0: 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
d700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d710: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
d720: 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74  TypeNames.TryGet
d730: 56 61 6c 75 65 28 6e 61 6d 65 2c 20 6f 75 74 20  Value(name, out 
d740: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
d750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d760: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d780: 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74  return value.dat
d790: 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20  aType;..        
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
d7c0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
d7d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d7e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d800: 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65          int inde
d810: 78 20 3d 20 6e 61 6d 65 2e 49 6e 64 65 78 4f 66  x = name.IndexOf
d820: 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ('(');....      
d830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d840: 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78        if ((index
d850: 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 20 20 20   > 0) &&..      
d860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d870: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
d880: 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72  tionTypeNames.Tr
d890: 79 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2e 53  yGetValue(name.S
d8a0: 75 62 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65  ubstring(0, inde
d8b0: 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75  x).TrimEnd(), ou
d8c0: 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20  t value))..     
d8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
d8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d900: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d910: 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b   value.dataType;
d920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d940: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d950: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
d960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d970: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
d980: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d990: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
d9a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
d9b0: 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66  OTE: Use the def
d9c0: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
d9d0: 70 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65  pe for the conne
d9e0: 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20  ction...        
d9f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
da00: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
da10: 75 6c 74 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e  ultDbType = conn
da20: 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62  ection.DefaultDb
da30: 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Type;..         
da40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
da50: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 28  ...        if ((
da60: 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
da70: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f  nnectionFlags.No
da80: 47 6c 6f 62 61 6c 54 79 70 65 73 29 20 3d 3d 20  GlobalTypes) == 
da90: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
daa0: 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61 6c 54 79  Flags.NoGlobalTy
dab0: 70 65 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20  pes)..          
dac0: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
dad0: 44 62 54 79 70 65 3b 0d 0a 0d 0a 20 20 20 20 20  DbType;....     
dae0: 20 20 20 6c 6f 63 6b 20 28 5f 73 79 6e 63 52 6f     lock (_syncRo
daf0: 6f 74 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ot)..        {..
db00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
db10: 5f 74 79 70 65 4e 61 6d 65 73 20 3d 3d 20 6e 75  _typeNames == nu
db20: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
db30: 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73 20       _typeNames 
db40: 3d 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70  = GetSQLiteDbTyp
db50: 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  eMap();....     
db60: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20         if (name 
db70: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
db80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
db90: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
dba0: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
dbb0: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
dbc0: 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 65         if (_type
dbd0: 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75  Names.TryGetValu
dbe0: 65 28 6e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75  e(name, out valu
dbf0: 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
dc00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
dc10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dc20: 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
dc30: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
dc40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
dc50: 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
dc60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
dc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc80: 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
dc90: 6e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27  name.IndexOf('('
dca0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
dcb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69            if ((i
dcc0: 6e 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20  ndex > 0) &&..  
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dce0: 20 20 20 20 20 20 5f 74 79 70 65 4e 61 6d 65 73        _typeNames
dcf0: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 6e 61 6d  .TryGetValue(nam
dd00: 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c 20 69  e.Substring(0, i
dd10: 6e 64 65 78 29 2e 54 72 69 6d 45 6e 64 28 29 2c  ndex).TrimEnd(),
dd20: 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
dd30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
dd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
dd60: 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79  urn value.dataTy
dd70: 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe;..           
dd80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
dd90: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
dda0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
ddb0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20 21        }....#if !
ddc0: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
ddd0: 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
dde0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74  .        if (!St
ddf0: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
de00: 74 79 28 6e 61 6d 65 29 20 26 26 0d 0a 20 20 20  ty(name) &&..   
de10: 20 20 20 20 20 20 20 20 20 28 28 66 6c 61 67 73           ((flags
de20: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
de30: 69 6f 6e 46 6c 61 67 73 2e 54 72 61 63 65 57 61  ionFlags.TraceWa
de40: 72 6e 69 6e 67 29 20 3d 3d 20 53 51 4c 69 74 65  rning) == SQLite
de50: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
de60: 54 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a  TraceWarning))..
de70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
de80: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69         Trace.Wri
de90: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f  teLine(String.Fo
dea0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
deb0: 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
dec0: 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72  fo.CurrentCultur
ded0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
dee0: 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54 79      "WARNING: Ty
def0: 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c 65  pe mapping faile
df00: 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65 66  d, returning def
df10: 61 75 6c 74 20 74 79 70 65 20 7b 30 7d 20 66 6f  ault type {0} fo
df20: 72 20 6e 61 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22  r name \"{1}\"."
df30: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
df40: 20 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65     defaultDbType
df50: 2c 20 6e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20  , name));..     
df60: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
df70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
df80: 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20  efaultDbType;.. 
df90: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
dfa0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 70 72 69 76  gion....    priv
dfb0: 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63  ate static objec
dfc0: 74 20 5f 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  t _syncRoot = ne
dfd0: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 20 20 20  w object();..   
dfe0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
dff0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20  SQLiteDbTypeMap 
e000: 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 6e 75 6c  _typeNames = nul
e010: 6c 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  l;..  }....  ///
e020: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f   <summary>..  //
e030: 2f 20 53 51 4c 69 74 65 20 68 61 73 20 76 65 72  / SQLite has ver
e040: 79 20 6c 69 6d 69 74 65 64 20 74 79 70 65 73 2c  y limited types,
e050: 20 61 6e 64 20 69 73 20 69 6e 68 65 72 65 6e 74   and is inherent
e060: 6c 79 20 74 65 78 74 2d 62 61 73 65 64 2e 20 20  ly text-based.  
e070: 54 68 65 20 66 69 72 73 74 20 35 20 74 79 70 65  The first 5 type
e080: 73 20 62 65 6c 6f 77 20 72 65 70 72 65 73 65 6e  s below represen
e090: 74 20 74 68 65 20 73 75 6d 20 6f 66 20 61 6c 6c  t the sum of all
e0a0: 20 74 79 70 65 73 20 53 51 4c 69 74 65 0d 0a 20   types SQLite.. 
e0b0: 20 2f 2f 2f 20 75 6e 64 65 72 73 74 61 6e 64 73   /// understands
e0c0: 2e 20 20 54 68 65 20 44 61 74 65 54 69 6d 65 20  .  The DateTime 
e0d0: 65 78 74 65 6e 73 69 6f 6e 20 74 6f 20 74 68 65  extension to the
e0e0: 20 73 70 65 63 20 69 73 20 66 6f 72 20 69 6e 74   spec is for int
e0f0: 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 2e 0d  ernal use only..
e100: 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
e110: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
e120: 20 54 79 70 65 41 66 66 69 6e 69 74 79 0d 0a 20   TypeAffinity.. 
e130: 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   {..    /// <sum
e140: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  mary>..    /// N
e150: 6f 74 20 75 73 65 64 0d 0a 20 20 20 20 2f 2f 2f  ot used..    ///
e160: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e170: 20 55 6e 69 6e 69 74 69 61 6c 69 7a 65 64 20 3d   Uninitialized =
e180: 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   0,..    /// <su
e190: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e1a0: 41 6c 6c 20 69 6e 74 65 67 65 72 73 20 69 6e 20  All integers in 
e1b0: 53 51 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74  SQLite default t
e1c0: 6f 20 49 6e 74 36 34 0d 0a 20 20 20 20 2f 2f 2f  o Int64..    ///
e1d0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e1e0: 20 49 6e 74 36 34 20 3d 20 31 2c 0d 0a 20 20 20   Int64 = 1,..   
e1f0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e200: 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 66 6c 6f 61      /// All floa
e210: 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
e220: 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 65 66  rs in SQLite def
e230: 61 75 6c 74 20 74 6f 20 64 6f 75 62 6c 65 0d 0a  ault to double..
e240: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
e250: 79 3e 0d 0a 20 20 20 20 44 6f 75 62 6c 65 20 3d  y>..    Double =
e260: 20 32 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   2,..    /// <su
e270: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e280: 54 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 61  The default data
e290: 20 74 79 70 65 20 6f 66 20 53 51 4c 69 74 65 20   type of SQLite 
e2a0: 69 73 20 74 65 78 74 0d 0a 20 20 20 20 2f 2f 2f  is text..    ///
e2b0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e2c0: 20 54 65 78 74 20 3d 20 33 2c 0d 0a 20 20 20 20   Text = 3,..    
e2d0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e2e0: 20 20 20 2f 2f 2f 20 54 79 70 69 63 61 6c 6c 79     /// Typically
e2f0: 20 62 6c 6f 62 20 74 79 70 65 73 20 61 72 65 20   blob types are 
e300: 6f 6e 6c 79 20 73 65 65 6e 20 77 68 65 6e 20 72  only seen when r
e310: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 61 20 66  eturned from a f
e320: 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  unction..    ///
e330: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e340: 20 42 6c 6f 62 20 3d 20 34 2c 0d 0a 20 20 20 20   Blob = 4,..    
e350: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
e360: 20 20 20 2f 2f 2f 20 4e 75 6c 6c 20 74 79 70 65     /// Null type
e370: 73 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e 65  s can be returne
e380: 64 20 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73  d from functions
e390: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
e3a0: 61 72 79 3e 0d 0a 20 20 20 20 4e 75 6c 6c 20 3d  ary>..    Null =
e3b0: 20 35 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   5,..    /// <su
e3c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e3d0: 55 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  Used internally 
e3e0: 62 79 20 74 68 69 73 20 70 72 6f 76 69 64 65 72  by this provider
e3f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
e400: 61 72 79 3e 0d 0a 20 20 20 20 44 61 74 65 54 69  ary>..    DateTi
e410: 6d 65 20 3d 20 31 30 2c 0d 0a 20 20 20 20 2f 2f  me = 10,..    //
e420: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
e430: 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 65 72 6e   /// Used intern
e440: 61 6c 6c 79 20 62 79 20 74 68 69 73 20 70 72 6f  ally by this pro
e450: 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 3c  vider..    /// <
e460: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4e  /summary>..    N
e470: 6f 6e 65 20 3d 20 31 31 2c 0d 0a 20 20 7d 0d 0a  one = 11,..  }..
e480: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
e490: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  >..  /// These a
e4a0: 72 65 20 74 68 65 20 65 76 65 6e 74 20 74 79 70  re the event typ
e4b0: 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  es associated wi
e4c0: 74 68 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73  th the..  /// <s
e4d0: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
e4e0: 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 48 61  onnectionEventHa
e4f0: 6e 64 6c 65 72 22 20 2f 3e 0d 0a 20 20 2f 2f 2f  ndler" />..  ///
e500: 20 64 65 6c 65 67 61 74 65 20 28 61 6e 64 20 69   delegate (and i
e510: 74 73 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ts corresponding
e520: 20 65 76 65 6e 74 29 20 61 6e 64 20 74 68 65 0d   event) and the.
e530: 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66  .  /// <see cref
e540: 3d 22 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e  ="ConnectionEven
e550: 74 41 72 67 73 22 20 2f 3e 20 63 6c 61 73 73 2e  tArgs" /> class.
e560: 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72  ..  /// </summar
e570: 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75  y>..  public enu
e580: 6d 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  m SQLiteConnecti
e590: 6f 6e 45 76 65 6e 74 54 79 70 65 0d 0a 20 20 7b  onEventType..  {
e5a0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e5b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e5c0: 20 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20   Not used...    
e5d0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
e5e0: 0d 0a 20 20 20 20 20 20 49 6e 76 61 6c 69 64 20  ..      Invalid 
e5f0: 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = -1,....      /
e600: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
e610: 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64      /// Not used
e620: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
e630: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55  ummary>..      U
e640: 6e 6b 6e 6f 77 6e 20 3d 20 30 2c 0d 0a 0d 0a 20  nknown = 0,.... 
e650: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
e660: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
e670: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
e680: 62 65 69 6e 67 20 6f 70 65 6e 65 64 2e 0d 0a 20  being opened... 
e690: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e6a0: 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 69  ry>..      Openi
e6b0: 6e 67 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20  ng = 1,....     
e6c0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e6d0: 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f        /// The co
e6e0: 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20  nnection string 
e6f0: 68 61 73 20 62 65 65 6e 20 70 61 72 73 65 64 2e  has been parsed.
e700: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e710: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6f  mmary>..      Co
e720: 6e 6e 65 63 74 69 6f 6e 53 74 72 69 6e 67 20 3d  nnectionString =
e730: 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   2,....      ///
e740: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
e750: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
e760: 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e  tion was opened.
e770: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e780: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4f 70  mmary>..      Op
e790: 65 6e 65 64 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20  ened = 3,....   
e7a0: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
e7b0: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
e7c0: 3c 73 65 65 20 63 72 65 66 3d 22 43 68 61 6e 67  <see cref="Chang
e7d0: 65 44 61 74 61 62 61 73 65 22 20 2f 3e 20 6d 65  eDatabase" /> me
e7e0: 74 68 6f 64 20 77 61 73 20 63 61 6c 6c 65 64 20  thod was called 
e7f0: 6f 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  on the..      //
e800: 2f 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  / connection... 
e810: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
e820: 72 79 3e 0d 0a 20 20 20 20 20 20 43 68 61 6e 67  ry>..      Chang
e830: 65 44 61 74 61 62 61 73 65 20 3d 20 34 2c 0d 0a  eDatabase = 4,..
e840: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
e850: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
e860: 20 41 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 77   A transaction w
e870: 61 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  as created using
e880: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
e890: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
e8a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65  mmary>..      Ne
e8b0: 77 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 35  wTransaction = 5
e8c0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
e8d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
e8e0: 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69  /// The connecti
e8f0: 6f 6e 20 77 61 73 20 65 6e 6c 69 73 74 65 64 20  on was enlisted 
e900: 69 6e 74 6f 20 61 20 74 72 61 6e 73 61 63 74 69  into a transacti
e910: 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  on...      /// <
e920: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
e930: 20 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74 69   EnlistTransacti
e940: 6f 6e 20 3d 20 36 2c 0d 0a 0d 0a 20 20 20 20 20  on = 6,....     
e950: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
e960: 20 20 20 20 20 20 2f 2f 2f 20 41 20 63 6f 6d 6d        /// A comm
e970: 61 6e 64 20 77 61 73 20 63 72 65 61 74 65 64 20  and was created 
e980: 75 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  using the connec
e990: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
e9a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
e9b0: 20 20 20 4e 65 77 43 6f 6d 6d 61 6e 64 20 3d 20     NewCommand = 
e9c0: 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  7,....      /// 
e9d0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
e9e0: 20 2f 2f 2f 20 41 20 64 61 74 61 20 72 65 61 64   /// A data read
e9f0: 65 72 20 77 61 73 20 63 72 65 61 74 65 64 20 75  er was created u
ea00: 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74  sing the connect
ea10: 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ion...      /// 
ea20: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
ea30: 20 20 4e 65 77 44 61 74 61 52 65 61 64 65 72 20    NewDataReader 
ea40: 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 8,....      //
ea50: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
ea60: 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 73 74 61 6e     /// An instan
ea70: 63 65 20 6f 66 20 61 20 3c 73 65 65 20 63 72 65  ce of a <see cre
ea80: 66 3d 22 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  f="CriticalHandl
ea90: 65 22 20 2f 3e 20 64 65 72 69 76 65 64 20 63 6c  e" /> derived cl
eaa0: 61 73 73 20 68 61 73 0d 0a 20 20 20 20 20 20 2f  ass has..      /
eab0: 2f 2f 20 62 65 65 6e 20 63 72 65 61 74 65 64 20  // been created 
eac0: 74 6f 20 77 72 61 70 20 61 20 6e 61 74 69 76 65  to wrap a native
ead0: 20 72 65 73 6f 75 72 63 65 2e 0d 0a 20 20 20 20   resource...    
eae0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
eaf0: 0d 0a 20 20 20 20 20 20 4e 65 77 43 72 69 74 69  ..      NewCriti
eb00: 63 61 6c 48 61 6e 64 6c 65 20 3d 20 39 2c 0d 0a  calHandle = 9,..
eb10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
eb20: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
eb30: 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   The connection 
eb40: 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e  is being closed.
eb50: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
eb60: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c  mmary>..      Cl
eb70: 6f 73 69 6e 67 20 3d 20 31 30 2c 0d 0a 0d 0a 20  osing = 10,.... 
eb80: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
eb90: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
eba0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
ebb0: 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20   closed...      
ebc0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ebd0: 20 20 20 20 20 20 43 6c 6f 73 65 64 20 3d 20 31        Closed = 1
ebe0: 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
ebf0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
ec00: 20 2f 2f 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 69   /// A command i
ec10: 73 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64  s being disposed
ec20: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
ec30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
ec40: 69 73 70 6f 73 69 6e 67 43 6f 6d 6d 61 6e 64 20  isposingCommand 
ec50: 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 12,....      /
ec60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ec70: 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 20 72      /// A data r
ec80: 65 61 64 65 72 20 69 73 20 62 65 69 6e 67 20 64  eader is being d
ec90: 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20  isposed...      
eca0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
ecb0: 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67 44        DisposingD
ecc0: 61 74 61 52 65 61 64 65 72 20 3d 20 31 33 2c 0d  ataReader = 13,.
ecd0: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
ece0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
ecf0: 2f 20 41 20 64 61 74 61 20 72 65 61 64 65 72 20  / A data reader 
ed00: 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e  is being closed.
ed10: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
ed20: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c  mmary>..      Cl
ed30: 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65 72 20  osingDataReader 
ed40: 3d 20 31 34 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f  = 14..  }....  /
ed50: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
ed60: 2f 2f 2f 20 54 68 69 73 20 69 6d 70 6c 65 6d 65  /// This impleme
ed70: 6e 74 61 74 69 6f 6e 20 6f 66 20 53 51 4c 69 74  ntation of SQLit
ed80: 65 20 66 6f 72 20 41 44 4f 2e 4e 45 54 20 63 61  e for ADO.NET ca
ed90: 6e 20 70 72 6f 63 65 73 73 20 64 61 74 65 2f 74  n process date/t
eda0: 69 6d 65 20 66 69 65 6c 64 73 20 69 6e 0d 0a 20  ime fields in.. 
edb0: 20 2f 2f 2f 20 64 61 74 61 62 61 73 65 73 20 69   /// databases i
edc0: 6e 20 6f 6e 65 20 6f 66 20 73 69 78 20 66 6f 72  n one of six for
edd0: 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  mats...  /// </s
ede0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c  ummary>..  /// <
edf0: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20  remarks>..  /// 
ee00: 49 53 4f 38 36 30 31 20 66 6f 72 6d 61 74 20 69  ISO8601 format i
ee10: 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c  s more compatibl
ee20: 65 2c 20 72 65 61 64 61 62 6c 65 2c 20 66 75 6c  e, readable, ful
ee30: 6c 79 2d 70 72 6f 63 65 73 73 61 62 6c 65 2c 20  ly-processable, 
ee40: 62 75 74 20 6c 65 73 73 0d 0a 20 20 2f 2f 2f 20  but less..  /// 
ee50: 61 63 63 75 72 61 74 65 20 61 73 20 69 74 20 64  accurate as it d
ee60: 6f 65 73 20 6e 6f 74 20 70 72 6f 76 69 64 65 20  oes not provide 
ee70: 74 69 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61  time down to fra
ee80: 63 74 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f  ctions of a seco
ee90: 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61  nd...  /// Julia
eea0: 6e 44 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65  nDay is the nume
eeb0: 72 69 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53  ric format the S
eec0: 51 4c 69 74 65 20 75 73 65 73 20 69 6e 74 65 72  QLite uses inter
eed0: 6e 61 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67  nally and is arg
eee0: 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f 20 74 68 65  uably..  /// the
eef0: 20 6d 6f 73 74 20 63 6f 6d 70 61 74 69 62 6c 65   most compatible
ef00: 20 77 69 74 68 20 33 72 64 20 70 61 72 74 79 20   with 3rd party 
ef10: 74 6f 6f 6c 73 2e 20 20 49 74 20 69 73 20 6e 6f  tools.  It is no
ef20: 74 20 72 65 61 64 61 62 6c 65 20 61 73 20 74 65  t readable as te
ef30: 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75  xt..  /// withou
ef40: 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e  t post-processin
ef50: 67 2e 20 20 54 69 63 6b 73 20 6c 65 73 73 20 63  g.  Ticks less c
ef60: 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 33  ompatible with 3
ef70: 72 64 20 70 61 72 74 79 20 74 6f 6f 6c 73 20 74  rd party tools t
ef80: 68 61 74 0d 0a 20 20 2f 2f 2f 20 71 75 65 72 79  hat..  /// query
ef90: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 61   the database, a
efa0: 6e 64 20 72 65 6e 64 65 72 73 20 74 68 65 20 44  nd renders the D
efb0: 61 74 65 54 69 6d 65 20 66 69 65 6c 64 20 75 6e  ateTime field un
efc0: 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74  readable as text
efd0: 0d 0a 20 20 2f 2f 2f 20 77 69 74 68 6f 75 74 20  ..  /// without 
efe0: 70 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e  post-processing.
eff0: 20 20 55 6e 69 78 45 70 6f 63 68 20 69 73 20 6d    UnixEpoch is m
f000: 6f 72 65 20 63 6f 6d 70 61 74 69 62 6c 65 20 77  ore compatible w
f010: 69 74 68 20 55 6e 69 78 20 73 79 73 74 65 6d 73  ith Unix systems
f020: 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76 61 72 69 61  ...  /// Invaria
f030: 6e 74 43 75 6c 74 75 72 65 20 61 6c 6c 6f 77 73  ntCulture allows
f040: 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
f050: 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 69  format for the i
f060: 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72 65  nvariant culture
f070: 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d 61 74 20 74  ..  /// format t
f080: 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20 69 73  o be used and is
f090: 20 68 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 2e   human readable.
f0a0: 20 20 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65    CurrentCulture
f0b0: 20 61 6c 6c 6f 77 73 20 74 68 65 0d 0a 20 20 2f   allows the..  /
f0c0: 2f 2f 20 63 6f 6e 66 69 67 75 72 65 64 20 66 6f  // configured fo
f0d0: 72 6d 61 74 20 66 6f 72 20 74 68 65 20 63 75 72  rmat for the cur
f0e0: 72 65 6e 74 20 63 75 6c 74 75 72 65 20 74 6f 20  rent culture to 
f0f0: 62 65 20 75 73 65 64 20 61 6e 64 20 69 73 20 61  be used and is a
f100: 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20 20 2f 2f 2f  lso human..  ///
f110: 20 72 65 61 64 61 62 6c 65 2e 0d 0a 20 20 2f 2f   readable...  //
f120: 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 72 65  /..  /// The pre
f130: 66 65 72 72 65 64 20 6f 72 64 65 72 20 6f 66 20  ferred order of 
f140: 63 68 6f 6f 73 69 6e 67 20 61 20 44 61 74 65 54  choosing a DateT
f150: 69 6d 65 20 66 6f 72 6d 61 74 20 69 73 20 4a 75  ime format is Ju
f160: 6c 69 61 6e 44 61 79 2c 20 49 53 4f 38 36 30 31  lianDay, ISO8601
f170: 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65  ,..  /// and the
f180: 6e 20 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20  n Ticks.  Ticks 
f190: 69 73 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e  is mainly presen
f1a0: 74 20 66 6f 72 20 6c 65 67 61 63 79 20 63 6f 64  t for legacy cod
f1b0: 65 20 73 75 70 70 6f 72 74 2e 0d 0a 20 20 2f 2f  e support...  //
f1c0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
f1d0: 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
f1e0: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 0d 0a 20  teDateFormats.. 
f1f0: 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d   {..    /// <sum
f200: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55  mary>..    /// U
f210: 73 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  se the value of 
f220: 44 61 74 65 54 69 6d 65 2e 54 69 63 6b 73 2e 20  DateTime.Ticks. 
f230: 20 54 68 69 73 20 76 61 6c 75 65 20 69 73 20 6e   This value is n
f240: 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 61  ot recommended a
f250: 6e 64 20 69 73 20 6e 6f 74 20 77 65 6c 6c 20 73  nd is not well s
f260: 75 70 70 6f 72 74 65 64 20 77 69 74 68 20 4c 49  upported with LI
f270: 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  NQ...    /// </s
f280: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 69 63  ummary>..    Tic
f290: 6b 73 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f  ks = 0,..    ///
f2a0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
f2b0: 2f 2f 2f 20 55 73 65 20 74 68 65 20 49 53 4f 2d  /// Use the ISO-
f2c0: 38 36 30 31 20 66 6f 72 6d 61 74 2e 20 20 55 73  8601 format.  Us
f2d0: 65 73 20 74 68 65 20 22 79 79 79 79 2d 4d 4d 2d  es the "yyyy-MM-
f2e0: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
f2f0: 46 46 46 4b 22 20 66 6f 72 6d 61 74 20 66 6f 72  FFFK" format for
f300: 20 55 54 43 20 44 61 74 65 54 69 6d 65 20 76 61   UTC DateTime va
f310: 6c 75 65 73 20 61 6e 64 0d 0a 20 20 20 20 2f 2f  lues and..    //
f320: 2f 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  / "yyyy-MM-dd HH
f330: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 20  :mm:ss.FFFFFFF" 
f340: 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f 63 61 6c  format for local
f350: 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 73   DateTime values
f360: 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  )...    /// </su
f370: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 53 4f 38  mmary>..    ISO8
f380: 36 30 31 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f  601 = 1,..    //
f390: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
f3a0: 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 76 61   /// The interva
f3b0: 6c 20 6f 66 20 74 69 6d 65 20 69 6e 20 64 61 79  l of time in day
f3c0: 73 20 61 6e 64 20 66 72 61 63 74 69 6f 6e 73 20  s and fractions 
f3d0: 6f 66 20 61 20 64 61 79 20 73 69 6e 63 65 20 4a  of a day since J
f3e0: 61 6e 75 61 72 79 20 31 2c 20 34 37 31 33 20 42  anuary 1, 4713 B
f3f0: 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  C...    /// </su
f400: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4a 75 6c 69  mmary>..    Juli
f410: 61 6e 44 61 79 20 3d 20 32 2c 0d 0a 20 20 20 20  anDay = 2,..    
f420: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
f430: 20 20 20 2f 2f 2f 20 54 68 65 20 77 68 6f 6c 65     /// The whole
f440: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e   number of secon
f450: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
f460: 78 20 65 70 6f 63 68 20 28 4a 61 6e 75 61 72 79  x epoch (January
f470: 20 31 2c 20 31 39 37 30 29 2e 0d 0a 20 20 20 20   1, 1970)...    
f480: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
f490: 20 20 20 20 55 6e 69 78 45 70 6f 63 68 20 3d 20      UnixEpoch = 
f4a0: 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  3,..    /// <sum
f4b0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
f4c0: 6e 79 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 70  ny culture-indep
f4d0: 65 6e 64 65 6e 74 20 73 74 72 69 6e 67 20 76 61  endent string va
f4e0: 6c 75 65 20 74 68 61 74 20 74 68 65 20 2e 4e 45  lue that the .NE
f4f0: 54 20 46 72 61 6d 65 77 6f 72 6b 20 63 61 6e 20  T Framework can 
f500: 69 6e 74 65 72 70 72 65 74 20 61 73 20 61 20 76  interpret as a v
f510: 61 6c 69 64 20 44 61 74 65 54 69 6d 65 2e 0d 0a  alid DateTime...
f520: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f530: 79 3e 0d 0a 20 20 20 20 49 6e 76 61 72 69 61 6e  y>..    Invarian
f540: 74 43 75 6c 74 75 72 65 20 3d 20 34 2c 0d 0a 20  tCulture = 4,.. 
f550: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
f560: 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 79 20 73 74  ..    /// Any st
f570: 72 69 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20  ring value that 
f580: 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
f590: 72 6b 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74  rk can interpret
f5a0: 20 61 73 20 61 20 76 61 6c 69 64 20 44 61 74 65   as a valid Date
f5b0: 54 69 6d 65 20 75 73 69 6e 67 20 74 68 65 20 63  Time using the c
f5c0: 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65 2e 0d  urrent culture..
f5d0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
f5e0: 72 79 3e 0d 0a 20 20 20 20 43 75 72 72 65 6e 74  ry>..    Current
f5f0: 43 75 6c 74 75 72 65 20 3d 20 35 2c 0d 0a 20 20  Culture = 5,..  
f600: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
f610: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66  .    /// The def
f620: 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20  ault format for 
f630: 74 68 69 73 20 70 72 6f 76 69 64 65 72 2e 0d 0a  this provider...
f640: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
f650: 79 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20  y>..    Default 
f660: 3d 20 49 53 4f 38 36 30 31 0d 0a 20 20 7d 0d 0a  = ISO8601..  }..
f670: 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79  ..  /// <summary
f680: 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e  >..  /// This en
f690: 75 6d 20 64 65 74 65 72 6d 69 6e 65 73 20 68 6f  um determines ho
f6a0: 77 20 53 51 4c 69 74 65 20 74 72 65 61 74 73 20  w SQLite treats 
f6b0: 69 74 73 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  its journal file
f6c0: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
f6d0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d 61  ry>..  /// <rema
f6e0: 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 42 79 20 64  rks>..  /// By d
f6f0: 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 77 69  efault SQLite wi
f700: 6c 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65  ll create and de
f710: 6c 65 74 65 20 74 68 65 20 6a 6f 75 72 6e 61 6c  lete the journal
f720: 20 66 69 6c 65 20 77 68 65 6e 20 6e 65 65 64 65   file when neede
f730: 64 20 64 75 72 69 6e 67 20 61 20 74 72 61 6e 73  d during a trans
f740: 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f 2f 2f 20 48  action...  /// H
f750: 6f 77 65 76 65 72 2c 20 66 6f 72 20 73 6f 6d 65  owever, for some
f760: 20 63 6f 6d 70 75 74 65 72 73 20 72 75 6e 6e 69   computers runni
f770: 6e 67 20 63 65 72 74 61 69 6e 20 66 69 6c 65 73  ng certain files
f780: 79 73 74 65 6d 20 6d 6f 6e 69 74 6f 72 69 6e 67  ystem monitoring
f790: 20 74 6f 6f 6c 73 2c 20 74 68 65 20 72 61 70 69   tools, the rapi
f7a0: 64 0d 0a 20 20 2f 2f 2f 20 63 72 65 61 74 69 6f  d..  /// creatio
f7b0: 6e 20 61 6e 64 20 64 65 6c 65 74 69 6f 6e 20 6f  n and deletion o
f7c0: 66 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69  f the journal fi
f7d0: 6c 65 20 63 61 6e 20 63 61 75 73 65 20 74 68 6f  le can cause tho
f7e0: 73 65 20 70 72 6f 67 72 61 6d 73 20 74 6f 20 66  se programs to f
f7f0: 61 69 6c 2c 20 6f 72 20 74 6f 20 69 6e 74 65 72  ail, or to inter
f800: 66 65 72 65 20 77 69 74 68 20 53 51 4c 69 74 65  fere with SQLite
f810: 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20  ...  ///..  /// 
f820: 49 66 20 61 20 70 72 6f 67 72 61 6d 20 6f 72 20  If a program or 
f830: 76 69 72 75 73 20 73 63 61 6e 6e 65 72 20 69 73  virus scanner is
f840: 20 69 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74   interfering wit
f850: 68 20 53 51 4c 69 74 65 27 73 20 6a 6f 75 72 6e  h SQLite's journ
f860: 61 6c 20 66 69 6c 65 2c 20 79 6f 75 20 6d 61 79  al file, you may
f870: 20 72 65 63 65 69 76 65 20 65 72 72 6f 72 73 20   receive errors 
f880: 6c 69 6b 65 20 22 75 6e 61 62 6c 65 20 74 6f 20  like "unable to 
f890: 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 66 69  open database fi
f8a0: 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77 68 65 6e 20  le"..  /// when 
f8b0: 73 74 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73  starting a trans
f8c0: 61 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 69 73  action.  If this
f8d0: 20 69 73 20 68 61 70 70 65 6e 69 6e 67 2c 20 79   is happening, y
f8e0: 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 63  ou may want to c
f8f0: 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c  hange the defaul
f900: 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 20 74  t journal mode t
f910: 6f 20 50 65 72 73 69 73 74 2e 0d 0a 20 20 2f 2f  o Persist...  //
f920: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
f930: 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69  public enum SQLi
f940: 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64 65 45 6e 75  teJournalModeEnu
f950: 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  m..  {..    /// 
f960: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
f970: 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d  // The default m
f980: 6f 64 65 2c 20 74 68 69 73 20 63 61 75 73 65 73  ode, this causes
f990: 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20 74   SQLite to use t
f9a0: 68 65 20 65 78 69 73 74 69 6e 67 20 6a 6f 75 72  he existing jour
f9b0: 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 66 6f 72 20  naling mode for 
f9c0: 74 68 65 20 64 61 74 61 62 61 73 65 2e 0d 0a 20  the database... 
f9d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
f9e0: 3e 0d 0a 20 20 20 20 44 65 66 61 75 6c 74 20 3d  >..    Default =
f9f0: 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   -1,..    /// <s
fa00: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
fa10: 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 63 72 65   SQLite will cre
fa20: 61 74 65 20 61 6e 64 20 64 65 73 74 72 6f 79 20  ate and destroy 
fa30: 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
fa40: 20 61 73 2d 6e 65 65 64 65 64 2e 0d 0a 20 20 20   as-needed...   
fa50: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
fa60: 0a 20 20 20 20 44 65 6c 65 74 65 20 3d 20 30 2c  .    Delete = 0,
fa70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
fa80: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 57 68 65  ry>..    /// Whe
fa90: 6e 20 74 68 69 73 20 69 73 20 73 65 74 2c 20 53  n this is set, S
faa0: 51 4c 69 74 65 20 77 69 6c 6c 20 6b 65 65 70 20  QLite will keep 
fab0: 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
fac0: 20 65 76 65 6e 20 61 66 74 65 72 20 61 20 74 72   even after a tr
fad0: 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 63 6f  ansaction has co
fae0: 6d 70 6c 65 74 65 64 2e 20 20 49 74 27 73 20 63  mpleted.  It's c
faf0: 6f 6e 74 65 6e 74 73 20 77 69 6c 6c 20 62 65 20  ontents will be 
fb00: 65 72 61 73 65 64 2c 0d 0a 20 20 20 20 2f 2f 2f  erased,..    ///
fb10: 20 61 6e 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c   and the journal
fb20: 20 72 65 2d 75 73 65 64 20 61 73 20 6f 66 74 65   re-used as ofte
fb30: 6e 20 61 73 20 6e 65 65 64 65 64 2e 20 20 49 66  n as needed.  If
fb40: 20 69 74 20 69 73 20 64 65 6c 65 74 65 64 2c 20   it is deleted, 
fb50: 69 74 20 77 69 6c 6c 20 62 65 20 72 65 63 72 65  it will be recre
fb60: 61 74 65 64 20 74 68 65 20 6e 65 78 74 20 74 69  ated the next ti
fb70: 6d 65 20 69 74 20 69 73 20 6e 65 65 64 65 64 2e  me it is needed.
fb80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
fb90: 61 72 79 3e 0d 0a 20 20 20 20 50 65 72 73 69 73  ary>..    Persis
fba0: 74 20 3d 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20  t = 1,..    /// 
fbb0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
fbc0: 2f 2f 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 64  // This option d
fbd0: 69 73 61 62 6c 65 73 20 74 68 65 20 72 6f 6c 6c  isables the roll
fbe0: 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 65 6e 74  back journal ent
fbf0: 69 72 65 6c 79 2e 20 20 49 6e 74 65 72 72 75 70  irely.  Interrup
fc00: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
fc10: 20 6f 72 20 61 20 70 72 6f 67 72 61 6d 20 63 72   or a program cr
fc20: 61 73 68 20 63 61 6e 20 63 61 75 73 65 20 64 61  ash can cause da
fc30: 74 61 62 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20  tabase..    /// 
fc40: 63 6f 72 72 75 70 74 69 6f 6e 20 69 6e 20 74 68  corruption in th
fc50: 69 73 20 6d 6f 64 65 21 0d 0a 20 20 20 20 2f 2f  is mode!..    //
fc60: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
fc70: 20 20 4f 66 66 20 3d 20 32 2c 0d 0a 20 20 20 20    Off = 2,..    
fc80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fc90: 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
fca0: 6c 6c 20 74 72 75 6e 63 61 74 65 20 74 68 65 20  ll truncate the 
fcb0: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 74 6f 20  journal file to 
fcc0: 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 69 6e 73 74  zero-length inst
fcd0: 65 61 64 20 6f 66 20 64 65 6c 65 74 69 6e 67 20  ead of deleting 
fce0: 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  it...    /// </s
fcf0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 54 72 75  ummary>..    Tru
fd00: 6e 63 61 74 65 20 3d 20 33 2c 0d 0a 20 20 20 20  ncate = 3,..    
fd10: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
fd20: 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69     /// SQLite wi
fd30: 6c 6c 20 73 74 6f 72 65 20 74 68 65 20 6a 6f 75  ll store the jou
fd40: 72 6e 61 6c 20 69 6e 20 76 6f 6c 61 74 69 6c 65  rnal in volatile
fd50: 20 52 41 4d 2e 20 20 54 68 69 73 20 73 61 76 65   RAM.  This save
fd60: 73 20 64 69 73 6b 20 49 2f 4f 20 62 75 74 20 61  s disk I/O but a
fd70: 74 20 74 68 65 20 65 78 70 65 6e 73 65 20 6f 66  t the expense of
fd80: 20 64 61 74 61 62 61 73 65 20 73 61 66 65 74 79   database safety
fd90: 20 61 6e 64 20 69 6e 74 65 67 72 69 74 79 2e 0d   and integrity..
fda0: 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 65 20  .    /// If the 
fdb0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 69 6e  application usin
fdc0: 67 20 53 51 4c 69 74 65 20 63 72 61 73 68 65 73  g SQLite crashes
fdd0: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
fde0: 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  f a transaction 
fdf0: 77 68 65 6e 20 74 68 65 20 4d 45 4d 4f 52 59 20  when the MEMORY 
fe00: 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
fe10: 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65  is set, then the
fe20: 0d 0a 20 20 20 20 2f 2f 2f 20 64 61 74 61 62 61  ..    /// databa
fe30: 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 76 65 72  se file will ver
fe40: 79 20 6c 69 6b 65 6c 79 20 67 6f 20 63 6f 72 72  y likely go corr
fe50: 75 70 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  upt...    /// </
fe60: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 4d 65  summary>..    Me
fe70: 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20 20 20 20 2f  mory = 4,..    /
fe80: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
fe90: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 75 73 65    /// SQLite use
fea0: 73 20 61 20 77 72 69 74 65 2d 61 68 65 61 64 20  s a write-ahead 
feb0: 6c 6f 67 20 69 6e 73 74 65 61 64 20 6f 66 20 61  log instead of a
fec0: 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
fed0: 6c 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74  l to implement t
fee0: 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20 54 68  ransactions.  Th
fef0: 65 20 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67  e WAL journaling
ff00: 20 6d 6f 64 65 20 69 73 20 70 65 72 73 69 73 74   mode is persist
ff10: 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 61 66  ent;..    /// af
ff20: 74 65 72 20 62 65 69 6e 67 20 73 65 74 20 69 74  ter being set it
ff30: 20 73 74 61 79 73 20 69 6e 20 65 66 66 65 63 74   stays in effect
ff40: 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65   across multiple
ff50: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
ff60: 74 69 6f 6e 73 20 61 6e 64 20 61 66 74 65 72 20  tions and after 
ff70: 63 6c 6f 73 69 6e 67 20 61 6e 64 20 72 65 6f 70  closing and reop
ff80: 65 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ening the databa
ff90: 73 65 2e 20 41 20 64 61 74 61 62 61 73 65 0d 0a  se. A database..
ffa0: 20 20 20 20 2f 2f 2f 20 69 6e 20 57 41 4c 20 6a      /// in WAL j
ffb0: 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20 63  ournaling mode c
ffc0: 61 6e 20 6f 6e 6c 79 20 62 65 20 61 63 63 65 73  an only be acces
ffd0: 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 76 65  sed by SQLite ve
ffe0: 72 73 69 6f 6e 20 33 2e 37 2e 30 20 6f 72 20 6c  rsion 3.7.0 or l
fff0: 61 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ater...    /// <
10000 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 57  /summary>..    W
10010 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d 0a 0d 0a 20  al = 5..  }.... 
10020 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10030 20 20 2f 2f 2f 20 50 6f 73 73 69 62 6c 65 20 76    /// Possible v
10040 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 22 73  alues for the "s
10050 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61  ynchronous" data
10060 62 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 54  base setting.  T
10070 68 69 73 20 73 65 74 74 69 6e 67 20 64 65 74 65  his setting dete
10080 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f 2f 20 68 6f  rmines..  /// ho
10090 77 20 6f 66 74 65 6e 20 74 68 65 20 64 61 74 61  w often the data
100a0 62 61 73 65 20 65 6e 67 69 6e 65 20 63 61 6c 6c  base engine call
100b0 73 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68  s the xSync meth
100c0 6f 64 20 6f 66 20 74 68 65 20 56 46 53 2e 0d 0a  od of the VFS...
100d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
100e0 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 65 6e 75  ..  internal enu
100f0 6d 20 53 51 4c 69 74 65 53 79 6e 63 68 72 6f 6e  m SQLiteSynchron
10100 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20  ousEnum..  {..  
10110 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
10120 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 55 73 65  >..      /// Use
10130 20 74 68 65 20 64 65 66 61 75 6c 74 20 22 73 79   the default "sy
10140 6e 63 68 72 6f 6e 6f 75 73 22 20 64 61 74 61 62  nchronous" datab
10150 61 73 65 20 73 65 74 74 69 6e 67 2e 20 20 43 75  ase setting.  Cu
10160 72 72 65 6e 74 6c 79 2c 20 74 68 69 73 20 73 68  rrently, this sh
10170 6f 75 6c 64 20 62 65 0d 0a 20 20 20 20 20 20 2f  ould be..      /
10180 2f 2f 20 74 68 65 20 73 61 6d 65 20 61 73 20 75  // the same as u
10190 73 69 6e 67 20 74 68 65 20 46 55 4c 4c 20 6d 6f  sing the FULL mo
101a0 64 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  de...      /// <
101b0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
101c0 20 44 65 66 61 75 6c 74 20 3d 20 2d 31 2c 0d 0a   Default = -1,..
101d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
101e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
101f0 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   The database en
10200 67 69 6e 65 20 63 6f 6e 74 69 6e 75 65 73 20 77  gine continues w
10210 69 74 68 6f 75 74 20 73 79 6e 63 69 6e 67 20 61  ithout syncing a
10220 73 20 73 6f 6f 6e 20 61 73 20 69 74 20 68 61 73  s soon as it has
10230 20 68 61 6e 64 65 64 0d 0a 20 20 20 20 20 20 2f   handed..      /
10240 2f 2f 20 64 61 74 61 20 6f 66 66 20 74 6f 20 74  // data off to t
10250 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
10260 74 65 6d 2e 20 20 49 66 20 74 68 65 20 61 70 70  tem.  If the app
10270 6c 69 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67  lication running
10280 20 53 51 4c 69 74 65 0d 0a 20 20 20 20 20 20 2f   SQLite..      /
10290 2f 2f 20 63 72 61 73 68 65 73 2c 20 74 68 65 20  // crashes, the 
102a0 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73 61 66  data will be saf
102b0 65 2c 20 62 75 74 20 74 68 65 20 64 61 74 61 62  e, but the datab
102c0 61 73 65 20 6d 69 67 68 74 20 62 65 63 6f 6d 65  ase might become
102d0 20 63 6f 72 72 75 70 74 65 64 0d 0a 20 20 20 20   corrupted..    
102e0 20 20 2f 2f 2f 20 69 66 20 74 68 65 20 6f 70 65    /// if the ope
102f0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
10300 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d  ashes or the com
10310 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65  puter loses powe
10320 72 20 62 65 66 6f 72 65 20 74 68 61 74 0d 0a 20  r before that.. 
10330 20 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 68 61       /// data ha
10340 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e 20 74  s been written t
10350 6f 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61  o the disk surfa
10360 63 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ce...      /// <
10370 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
10380 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d 0a 20 20 20   Off = 0,....   
10390 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
103a0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
103b0 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
103c0 77 69 6c 6c 20 73 74 69 6c 6c 20 73 79 6e 63 20  will still sync 
103d0 61 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74  at the most crit
103e0 69 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75  ical moments, bu
103f0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6c 65 73  t..      /// les
10400 73 20 6f 66 74 65 6e 20 74 68 61 6e 20 69 6e 20  s often than in 
10410 46 55 4c 4c 20 6d 6f 64 65 2e 20 20 54 68 65 72  FULL mode.  Ther
10420 65 20 69 73 20 61 20 76 65 72 79 20 73 6d 61 6c  e is a very smal
10430 6c 20 28 74 68 6f 75 67 68 20 6e 6f 6e 2d 7a 65  l (though non-ze
10440 72 6f 29 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63  ro)..      /// c
10450 68 61 6e 63 65 20 74 68 61 74 20 61 20 70 6f 77  hance that a pow
10460 65 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75  er failure at ju
10470 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d  st the wrong tim
10480 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20  e could corrupt 
10490 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64  the..      /// d
104a0 61 74 61 62 61 73 65 20 69 6e 20 4e 4f 52 4d 41  atabase in NORMA
104b0 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f  L mode...      /
104c0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
104d0 20 20 20 20 20 4e 6f 72 6d 61 6c 20 3d 20 31 2c       Normal = 1,
104e0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
104f0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10500 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73 65 20  // The database 
10510 65 6e 67 69 6e 65 20 77 69 6c 6c 20 75 73 65 20  engine will use 
10520 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64  the xSync method
10530 20 6f 66 20 74 68 65 20 56 46 53 20 74 6f 20 65   of the VFS to e
10540 6e 73 75 72 65 20 74 68 61 74 0d 0a 20 20 20 20  nsure that..    
10550 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f 6e 74 65 6e    /// all conten
10560 74 20 69 73 20 73 61 66 65 6c 79 20 77 72 69 74  t is safely writ
10570 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20  ten to the disk 
10580 73 75 72 66 61 63 65 20 70 72 69 6f 72 20 74 6f  surface prior to
10590 20 63 6f 6e 74 69 6e 75 69 6e 67 2e 0d 0a 20 20   continuing...  
105a0 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 6e 73      /// This ens
105b0 75 72 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65  ures that an ope
105c0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 63 72  rating system cr
105d0 61 73 68 20 6f 72 20 70 6f 77 65 72 20 66 61 69  ash or power fai
105e0 6c 75 72 65 20 77 69 6c 6c 20 6e 6f 74 0d 0a 20  lure will not.. 
105f0 20 20 20 20 20 2f 2f 2f 20 63 6f 72 72 75 70 74       /// corrupt
10600 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 20   the database.  
10610 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75 73  FULL synchronous
10620 20 69 73 20 76 65 72 79 20 73 61 66 65 2c 20 62   is very safe, b
10630 75 74 20 69 74 20 69 73 20 61 6c 73 6f 0d 0a 20  ut it is also.. 
10640 20 20 20 20 20 2f 2f 2f 20 73 6c 6f 77 65 72 2e       /// slower.
10650 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
10660 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75  mmary>..      Fu
10670 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a 20  ll = 2..  }.... 
10680 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
10690 20 20 2f 2f 2f 20 54 68 65 20 72 65 71 75 65 73    /// The reques
106a0 74 65 64 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ted command exec
106b0 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 54 68 69  ution type.  Thi
106c0 73 20 63 6f 6e 74 72 6f 6c 73 20 77 68 69 63 68  s controls which
106d0 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 0d 0a   method of the..
106e0 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
106f0 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 22 20  "SQLiteCommand" 
10700 2f 3e 20 6f 62 6a 65 63 74 20 77 69 6c 6c 20 62  /> object will b
10710 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 2f 2f 2f  e called...  ///
10720 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
10730 75 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74  ublic enum SQLit
10740 65 45 78 65 63 75 74 65 54 79 70 65 0d 0a 20 20  eExecuteType..  
10750 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  {..      /// <su
10760 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10770 2f 20 44 6f 20 6e 6f 74 68 69 6e 67 2e 20 20 4e  / Do nothing.  N
10780 6f 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 62 65  o method will be
10790 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
107a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
107b0 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20 30 2c 0d        None = 0,.
107c0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
107d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
107e0 2f 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73  / The command is
107f0 20 6e 6f 74 20 65 78 70 65 63 74 65 64 20 74 6f   not expected to
10800 20 72 65 74 75 72 6e 20 61 20 72 65 73 75 6c 74   return a result
10810 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74   -OR- the result
10820 20 69 73 20 6e 6f 74 0d 0a 20 20 20 20 20 20 2f   is not..      /
10830 2f 2f 20 6e 65 65 64 65 64 2e 20 20 54 68 65 20  // needed.  The 
10840 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
10850 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
10860 4e 6f 6e 51 75 65 72 79 28 29 22 20 2f 3e 20 6f  NonQuery()" /> o
10870 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65  r..      /// <se
10880 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f  e cref="SQLiteCo
10890 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e  mmand.ExecuteNon
108a0 51 75 65 72 79 28 43 6f 6d 6d 61 6e 64 42 65 68  Query(CommandBeh
108b0 61 76 69 6f 72 29 22 20 2f 3e 20 20 6d 65 74 68  avior)" />  meth
108c0 6f 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 77 69  od..      /// wi
108d0 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  ll be called... 
108e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
108f0 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 51 75  ry>..      NonQu
10900 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20  ery = 1,....    
10910 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10920 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
10930 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74  ommand is expect
10940 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 73  ed to return a s
10950 63 61 6c 61 72 20 72 65 73 75 6c 74 20 2d 4f 52  calar result -OR
10960 2d 20 74 68 65 20 72 65 73 75 6c 74 20 73 68 6f  - the result sho
10970 75 6c 64 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62  uld..      /// b
10980 65 20 6c 69 6d 69 74 65 64 20 74 6f 20 61 20 73  e limited to a s
10990 63 61 6c 61 72 20 72 65 73 75 6c 74 2e 20 20 54  calar result.  T
109a0 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51  he <see cref="SQ
109b0 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63  LiteCommand.Exec
109c0 75 74 65 53 63 61 6c 61 72 28 29 22 20 2f 3e 0d  uteScalar()" />.
109d0 0a 20 20 20 20 20 20 2f 2f 2f 20 6f 72 20 3c 73  .      /// or <s
109e0 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 43  ee cref="SQLiteC
109f0 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 53 63  ommand.ExecuteSc
10a00 61 6c 61 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61  alar(CommandBeha
10a10 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64  vior)" /> method
10a20 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f   will..      ///
10a30 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20   be called...   
10a40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
10a50 3e 0d 0a 20 20 20 20 20 20 53 63 61 6c 61 72 20  >..      Scalar 
10a60 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 2,....      //
10a70 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
10a80 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61     /// The comma
10a90 6e 64 20 69 73 20 65 78 70 65 63 74 65 64 20 74  nd is expected t
10aa0 6f 20 72 65 74 75 72 6e 20 3c 73 65 65 20 63 72  o return <see cr
10ab0 65 66 3d 22 53 51 4c 69 74 65 44 61 74 61 52 65  ef="SQLiteDataRe
10ac0 61 64 65 72 22 20 2f 3e 20 72 65 73 75 6c 74 2e  ader" /> result.
10ad0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
10ae0 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74  <see cref="SQLit
10af0 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65  eCommand.Execute
10b00 52 65 61 64 65 72 28 29 22 20 2f 3e 20 6f 72 0d  Reader()" /> or.
10b10 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  .      /// <see 
10b20 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d  cref="SQLiteComm
10b30 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61 64 65  and.ExecuteReade
10b40 72 28 43 6f 6d 6d 61 6e 64 42 65 68 61 76 69 6f  r(CommandBehavio
10b50 72 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69  r)" /> method wi
10b60 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65  ll..      /// be
10b70 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20   called...      
10b80 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10b90 20 20 20 20 20 20 52 65 61 64 65 72 20 3d 20 33        Reader = 3
10ba0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
10bb0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10bc0 2f 2f 2f 20 55 73 65 20 74 68 65 20 64 65 66 61  /// Use the defa
10bd0 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 65 78 65 63  ult command exec
10be0 75 74 69 6f 6e 20 74 79 70 65 2e 20 20 55 73 69  ution type.  Usi
10bf0 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 69 73  ng this value is
10c00 20 74 68 65 20 73 61 6d 65 0d 0a 20 20 20 20 20   the same..     
10c10 20 2f 2f 2f 20 61 73 20 75 73 69 6e 67 20 74 68   /// as using th
10c20 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  e <see cref="SQL
10c30 69 74 65 45 78 65 63 75 74 65 54 79 70 65 2e 4e  iteExecuteType.N
10c40 6f 6e 51 75 65 72 79 22 20 2f 3e 20 76 61 6c 75  onQuery" /> valu
10c50 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
10c60 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
10c70 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 51 75 65  Default = NonQue
10c80 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 47 6f 6f 64  ry /* TODO: Good
10c90 20 64 65 66 61 75 6c 74 3f 20 2a 2f 0d 0a 20 20   default? */..  
10ca0 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d  }....  /// <summ
10cb0 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20  ary>..  /// The 
10cc0 61 63 74 69 6f 6e 20 63 6f 64 65 20 72 65 73 70  action code resp
10cd0 6f 6e 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20  onsible for the 
10ce0 63 75 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74  current call int
10cf0 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  o the authorizer
10d00 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  ...  /// </summa
10d10 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e  ry>..  public en
10d20 75 6d 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69  um SQLiteAuthori
10d30 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 0d 0a 20  zerActionCode.. 
10d40 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73   {..      /// <s
10d50 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
10d60 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e 20 69 73 20  // No action is 
10d70 62 65 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 2e  being performed.
10d80 20 20 54 68 69 73 20 76 61 6c 75 65 20 73 68 6f    This value sho
10d90 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20  uld not be used 
10da0 66 72 6f 6d 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  from..      /// 
10db0 65 78 74 65 72 6e 61 6c 20 63 6f 64 65 2e 0d 0a  external code...
10dc0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
10dd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65  ary>..      None
10de0 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = -1,....      
10df0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
10e00 20 20 20 20 20 2f 2f 2f 20 4e 6f 20 6c 6f 6e 67       /// No long
10e10 65 72 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 20  er used...      
10e20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
10e30 20 20 20 20 20 20 43 6f 70 79 20 3d 20 30 2c 0d        Copy = 0,.
10e40 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
10e50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
10e60 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c 20  / An index will 
10e70 62 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65  be created.  The
10e80 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
10e90 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
10ea0 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69 6e  he..      /// in
10eb0 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  dex name and the
10ec0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
10ed0 20 20 20 20 2f 2f 2f 0d 0a 20 20 20 20 20 20 2f      ///..      /
10ee0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
10ef0 20 20 20 20 20 43 72 65 61 74 65 49 6e 64 65 78       CreateIndex
10f00 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 1,....      /
10f10 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
10f20 20 20 20 20 2f 2f 2f 20 41 20 74 61 62 6c 65 20      /// A table 
10f30 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
10f40 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
10f50 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
10f60 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
10f70 2f 2f 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e  // table name an
10f80 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
10f90 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
10fa0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
10fb0 61 74 65 54 61 62 6c 65 20 3d 20 32 2c 0d 0a 0d  ateTable = 2,...
10fc0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
10fd0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
10fe0 41 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65  A temporary inde
10ff0 78 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  x will be create
11000 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
11010 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
11020 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
11030 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20   the index name 
11040 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
11050 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
11060 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
11070 20 43 72 65 61 74 65 54 65 6d 70 49 6e 64 65 78   CreateTempIndex
11080 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 3,....      /
11090 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
110a0 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72      /// A tempor
110b0 61 72 79 20 74 61 62 6c 65 20 77 69 6c 6c 20 62  ary table will b
110c0 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
110d0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
110e0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
110f0 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62   /// are the tab
11100 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  le name and a nu
11110 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
11120 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
11130 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
11140 70 54 61 62 6c 65 20 3d 20 34 2c 0d 0a 0d 0a 20  pTable = 4,.... 
11150 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
11160 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
11170 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67 67 65  temporary trigge
11180 72 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  r will be create
11190 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
111a0 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
111b0 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 65  s..      /// are
111c0 20 74 68 65 20 74 72 69 67 67 65 72 20 6e 61 6d   the trigger nam
111d0 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20  e and the table 
111e0 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  name...      ///
111f0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11200 20 20 20 43 72 65 61 74 65 54 65 6d 70 54 72 69     CreateTempTri
11210 67 67 65 72 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20  gger = 5,....   
11220 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11230 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
11240 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77 69 6c  mporary view wil
11250 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
11260 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
11270 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
11280 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20  ..      /// the 
11290 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20 61 20  view name and a 
112a0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
112b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
112c0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 54  >..      CreateT
112d0 65 6d 70 56 69 65 77 20 3d 20 36 2c 0d 0a 0d 0a  empView = 6,....
112e0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
112f0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
11300 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
11310 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20 61   created.  The a
11320 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
11330 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
11340 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69 67  ..      /// trig
11350 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
11360 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
11370 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11380 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65  y>..      Create
11390 54 72 69 67 67 65 72 20 3d 20 37 2c 0d 0a 0d 0a  Trigger = 7,....
113a0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
113b0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
113c0 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 63 72   view will be cr
113d0 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
113e0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
113f0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
11400 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
11410 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
11420 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
11430 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11440 20 20 43 72 65 61 74 65 56 69 65 77 20 3d 20 38    CreateView = 8
11450 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
11460 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11470 2f 2f 2f 20 41 20 44 45 4c 45 54 45 20 73 74 61  /// A DELETE sta
11480 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
11490 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
114a0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
114b0 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
114c0 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
114d0 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
114e0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
114f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11500 20 20 20 20 20 44 65 6c 65 74 65 20 3d 20 39 2c       Delete = 9,
11510 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
11520 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11530 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c 6c  // An index will
11540 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68   be dropped.  Th
11550 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
11560 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
11570 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 69  the..      /// i
11580 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68  ndex name and th
11590 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
115a0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
115b0 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 49  ry>..      DropI
115c0 6e 64 65 78 20 3d 20 31 30 2c 0d 0a 0d 0a 20 20  ndex = 10,....  
115d0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
115e0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
115f0 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64 72 6f  able will be dro
11600 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
11610 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
11620 65 6e 74 73 20 61 72 65 20 74 68 65 20 74 61 62  ents are the tab
11630 6c 65 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e  les..      /// n
11640 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76  ame and a null v
11650 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  alue...      ///
11660 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
11670 20 20 20 44 72 6f 70 54 61 62 6c 65 20 3d 20 31     DropTable = 1
11680 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
11690 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
116a0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
116b0 20 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 64   index will be d
116c0 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
116d0 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
116e0 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
116f0 20 20 2f 2f 2f 20 74 68 65 20 69 6e 64 65 78 20    /// the index 
11700 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
11710 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
11720 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
11730 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 49 6e        DropTempIn
11740 64 65 78 20 3d 20 31 32 2c 0d 0a 0d 0a 20 20 20  dex = 12,....   
11750 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
11760 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
11770 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69  mporary table wi
11780 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
11790 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
117a0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
117b0 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68 65  e..      /// the
117c0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
117d0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
117e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
117f0 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
11800 65 6d 70 54 61 62 6c 65 20 3d 20 31 33 2c 0d 0a  empTable = 13,..
11810 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
11820 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
11830 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72 69   A temporary tri
11840 67 67 65 72 20 77 69 6c 6c 20 62 65 20 64 72 6f  gger will be dro
11850 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f  pped.  The actio
11860 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d  n-specific argum
11870 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ents..      /// 
11880 61 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20  are the trigger 
11890 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62  name and the tab
118a0 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
118b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
118c0 20 20 20 20 20 20 44 72 6f 70 54 65 6d 70 54 72        DropTempTr
118d0 69 67 67 65 72 20 3d 20 31 34 2c 0d 0a 0d 0a 20  igger = 14,.... 
118e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
118f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
11900 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 20 77  temporary view w
11910 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20  ill be dropped. 
11920 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
11930 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
11940 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 68  re..      /// th
11950 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e 64 20  e view name and 
11960 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
11970 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11980 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
11990 65 6d 70 56 69 65 77 20 3d 20 31 35 2c 0d 0a 0d  empView = 15,...
119a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
119b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
119c0 41 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62  A trigger will b
119d0 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
119e0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
119f0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
11a00 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 72 69  e..      /// tri
11a10 67 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68  gger name and th
11a20 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20  e table name... 
11a30 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
11a40 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54  ry>..      DropT
11a50 72 69 67 67 65 72 20 3d 20 31 36 2c 0d 0a 0d 0a  rigger = 16,....
11a60 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
11a70 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
11a80 20 76 69 65 77 20 77 69 6c 6c 20 62 65 20 64 72   view will be dr
11a90 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74 69  opped.  The acti
11aa0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
11ab0 6d 65 6e 74 73 20 61 72 65 20 74 68 65 20 76 69  ments are the vi
11ac0 65 77 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 61  ew..      /// na
11ad0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
11ae0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
11af0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
11b00 20 20 44 72 6f 70 56 69 65 77 20 3d 20 31 37 2c    DropView = 17,
11b10 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
11b20 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
11b30 2f 2f 20 41 6e 20 49 4e 53 45 52 54 20 73 74 61  // An INSERT sta
11b40 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
11b50 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
11b60 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
11b70 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
11b80 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c 65  // are the table
11b90 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c   name and a null
11ba0 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f   value...      /
11bb0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11bc0 20 20 20 20 20 49 6e 73 65 72 74 20 3d 20 31 38       Insert = 18
11bd0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
11be0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11bf0 2f 2f 2f 20 41 20 50 52 41 47 4d 41 20 73 74 61  /// A PRAGMA sta
11c00 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 65  tement will be e
11c10 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61 63  xecuted.  The ac
11c20 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
11c30 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f  guments..      /
11c40 2f 2f 20 61 72 65 20 74 68 65 20 6e 61 6d 65 20  // are the name 
11c50 6f 66 20 74 68 65 20 50 52 41 47 4d 41 20 61 6e  of the PRAGMA an
11c60 64 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20  d the new value 
11c70 6f 72 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  or a null value.
11c80 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
11c90 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 50 72  mmary>..      Pr
11ca0 61 67 6d 61 20 3d 20 31 39 2c 0d 0a 0d 0a 20 20  agma = 19,....  
11cb0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
11cc0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
11cd0 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c  able column will
11ce0 20 62 65 20 72 65 61 64 2e 20 20 54 68 65 20 61   be read.  The a
11cf0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
11d00 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
11d10 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 74 61 62 6c  ..      /// tabl
11d20 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
11d30 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
11d40 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11d50 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 20 3d 20  >..      Read = 
11d60 32 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  20,....      ///
11d70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11d80 20 20 2f 2f 2f 20 41 20 53 45 4c 45 43 54 20 73    /// A SELECT s
11d90 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65  tatement will be
11da0 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20   executed.  The 
11db0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
11dc0 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20  arguments..     
11dd0 20 2f 2f 2f 20 61 72 65 20 62 6f 74 68 20 6e 75   /// are both nu
11de0 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
11df0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
11e00 0d 0a 20 20 20 20 20 20 53 65 6c 65 63 74 20 3d  ..      Select =
11e10 20 32 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   21,....      //
11e20 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11e30 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 61 63     /// A transac
11e40 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 73 74 61  tion will be sta
11e50 72 74 65 64 2c 20 63 6f 6d 6d 69 74 74 65 64 2c  rted, committed,
11e60 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e   or rolled back.
11e70 20 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f    The..      ///
11e80 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
11e90 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
11ea0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f  he name of the o
11eb0 70 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c  peration (BEGIN,
11ec0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 43 4f 4d 4d  ..      /// COMM
11ed0 49 54 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  IT, or ROLLBACK)
11ee0 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75   and a null valu
11ef0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
11f00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11f10 54 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 32 32  Transaction = 22
11f20 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
11f30 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
11f40 2f 2f 2f 20 41 6e 20 55 50 44 41 54 45 20 73 74  /// An UPDATE st
11f50 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  atement will be 
11f60 65 78 65 63 75 74 65 64 2e 20 20 54 68 65 20 61  executed.  The a
11f70 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
11f80 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
11f90 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 61 62 6c  /// are the tabl
11fa0 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 63  e name and the c
11fb0 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20  olumn name...   
11fc0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11fd0 3e 0d 0a 20 20 20 20 20 20 55 70 64 61 74 65 20  >..      Update 
11fe0 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 23,....      /
11ff0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12000 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61 62 61      /// A databa
12010 73 65 20 77 69 6c 6c 20 62 65 20 61 74 74 61 63  se will be attac
12020 68 65 64 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65  hed to the conne
12030 63 74 69 6f 6e 2e 20 20 54 68 65 20 61 63 74 69  ction.  The acti
12040 6f 6e 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20  on-specific..   
12050 20 20 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73     /// arguments
12060 20 61 72 65 20 74 68 65 20 64 61 74 61 62 61 73   are the databas
12070 65 20 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20  e file name and 
12080 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
12090 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
120a0 72 79 3e 0d 0a 20 20 20 20 20 20 41 74 74 61 63  ry>..      Attac
120b0 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20 20 20 20 20  h = 24,....     
120c0 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
120d0 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
120e0 62 61 73 65 20 77 69 6c 6c 20 62 65 20 64 65 74  base will be det
120f0 61 63 68 65 64 20 66 72 6f 6d 20 74 68 65 20 63  ached from the c
12100 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20  onnection.  The 
12110 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d  action-specific.
12120 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d  .      /// argum
12130 65 6e 74 73 20 61 72 65 20 74 68 65 20 64 61 74  ents are the dat
12140 61 62 61 73 65 20 6e 61 6d 65 20 61 6e 64 20 61  abase name and a
12150 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20   null value...  
12160 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
12170 79 3e 0d 0a 20 20 20 20 20 20 44 65 74 61 63 68  y>..      Detach
12180 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 25,....      
12190 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
121a0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 63 68       /// The sch
121b0 65 6d 61 20 6f 66 20 61 20 74 61 62 6c 65 20 77  ema of a table w
121c0 69 6c 6c 20 62 65 20 61 6c 74 65 72 65 64 2e 20  ill be altered. 
121d0 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
121e0 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
121f0 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68        /// are th
12200 65 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  e database name 
12210 61 6e 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61  and the table na
12220 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  me...      /// <
12230 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
12240 20 41 6c 74 65 72 54 61 62 6c 65 20 3d 20 32 36   AlterTable = 26
12250 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
12260 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12270 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77 69 6c  /// An index wil
12280 6c 20 62 65 20 64 65 6c 65 74 65 64 20 61 6e 64  l be deleted and
12290 20 74 68 65 6e 20 72 65 63 72 65 61 74 65 64 2e   then recreated.
122a0 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
122b0 63 69 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f  cific..      ///
122c0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74   arguments are t
122d0 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e  he index name an
122e0 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
122f0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
12300 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 69  mary>..      Rei
12310 6e 64 65 78 20 3d 20 32 37 2c 0d 0a 0d 0a 20 20  ndex = 27,....  
12320 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12330 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74  >..      /// A t
12340 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 61 6e 61  able will be ana
12350 6c 79 7a 65 64 20 74 6f 20 67 61 74 68 65 72 73  lyzed to gathers
12360 20 73 74 61 74 69 73 74 69 63 73 20 61 62 6f 75   statistics abou
12370 74 20 69 74 2e 20 20 54 68 65 0d 0a 20 20 20 20  t it.  The..    
12380 20 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65    /// action-spe
12390 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
123a0 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 6e 61  are the table na
123b0 6d 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61  me and a null va
123c0 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
123d0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
123e0 20 20 41 6e 61 6c 79 7a 65 20 3d 20 32 38 2c 0d    Analyze = 28,.
123f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
12400 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
12410 2f 20 41 20 76 69 72 74 75 61 6c 20 74 61 62 6c  / A virtual tabl
12420 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
12430 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
12440 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
12450 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
12460 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
12470 61 6e 64 20 74 68 65 20 6d 6f 64 75 6c 65 20 6e  and the module n
12480 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ame...      /// 
12490 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
124a0 20 20 43 72 65 61 74 65 56 74 61 62 6c 65 20 3d    CreateVtable =
124b0 20 32 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   29,....      //
124c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
124d0 20 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c     /// A virtual
124e0 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 64   table will be d
124f0 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61 63 74  ropped.  The act
12500 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67  ion-specific arg
12510 75 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20  uments are..    
12520 20 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20    /// the table 
12530 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64  name and the mod
12540 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ule name...     
12550 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
12560 0a 20 20 20 20 20 20 44 72 6f 70 56 74 61 62 6c  .      DropVtabl
12570 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20 20 20 20 20  e = 30,....     
12580 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12590 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 51 4c 20        /// A SQL 
125a0 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
125b0 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20 61 63   called.  The ac
125c0 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72  tion-specific ar
125d0 67 75 6d 65 6e 74 73 20 61 72 65 20 61 0d 0a 20  guments are a.. 
125e0 20 20 20 20 20 2f 2f 2f 20 6e 75 6c 6c 20 76 61       /// null va
125f0 6c 75 65 20 61 6e 64 20 74 68 65 20 66 75 6e 63  lue and the func
12600 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a 20 20 20 20  tion name...    
12610 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12620 0d 0a 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e  ..      Function
12630 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 31,....      
12640 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
12650 20 20 20 20 20 2f 2f 2f 20 41 20 73 61 76 65 70       /// A savep
12660 6f 69 6e 74 20 77 69 6c 6c 20 62 65 20 63 72 65  oint will be cre
12670 61 74 65 64 2c 20 72 65 6c 65 61 73 65 64 2c 20  ated, released, 
12680 6f 72 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20  or rolled back. 
12690 20 54 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   The..      /// 
126a0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
126b0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
126c0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 70  e name of the op
126d0 65 72 61 74 69 6f 6e 20 28 42 45 47 49 4e 2c 0d  eration (BEGIN,.
126e0 0a 20 20 20 20 20 20 2f 2f 2f 20 52 45 4c 45 41  .      /// RELEA
126f0 53 45 2c 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 29  SE, or ROLLBACK)
12700 20 61 6e 64 20 74 68 65 20 73 61 76 65 70 6f 69   and the savepoi
12710 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  nt name...      
12720 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
12730 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20        Savepoint 
12740 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 32,....      /
12750 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12760 20 20 20 20 2f 2f 2f 20 41 20 72 65 63 75 72 73      /// A recurs
12770 69 76 65 20 71 75 65 72 79 20 77 69 6c 6c 20 62  ive query will b
12780 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68 65  e executed.  The
12790 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
127a0 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20   arguments..    
127b0 20 20 2f 2f 2f 20 61 72 65 20 74 77 6f 20 6e 75    /// are two nu
127c0 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20  ll values...    
127d0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
127e0 0d 0a 20 20 20 20 20 20 52 65 63 75 72 73 69 76  ..      Recursiv
127f0 65 20 3d 20 33 33 0d 0a 20 20 7d 0d 0a 0d 0a 20  e = 33..  }.... 
12800 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
12810 20 20 2f 2f 2f 20 54 68 65 20 72 65 74 75 72 6e    /// The return
12820 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20 63 75   code for the cu
12830 72 72 65 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20  rrent call into 
12840 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d  the authorizer..
12850 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79  .  /// </summary
12860 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d  >..  public enum
12870 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
12880 72 52 65 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b  rReturnCode..  {
12890 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
128a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
128b0 20 54 68 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c   The action will
128c0 20 62 65 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20   be allowed...  
128d0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
128e0 79 3e 0d 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30  y>..      Ok = 0
128f0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
12900 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12910 2f 2f 2f 20 54 68 65 20 6f 76 65 72 61 6c 6c 20  /// The overall 
12920 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64  action will be d
12930 69 73 61 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e  isallowed and an
12940 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 77   error message w
12950 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f  ill be..      //
12960 2f 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20  / returned from 
12970 74 68 65 20 71 75 65 72 79 20 70 72 65 70 61 72  the query prepar
12980 61 74 69 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20  ation method... 
12990 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
129a0 72 79 3e 0d 0a 20 20 20 20 20 20 44 65 6e 79 20  ry>..      Deny 
129b0 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
129c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
129d0 20 20 20 2f 2f 2f 20 54 68 65 20 73 70 65 63 69     /// The speci
129e0 66 69 63 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20  fic action will 
129f0 62 65 20 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68  be disallowed; h
12a00 6f 77 65 76 65 72 2c 20 74 68 65 20 6f 76 65 72  owever, the over
12a10 61 6c 6c 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20  all action..    
12a20 20 20 2f 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69    /// will conti
12a30 6e 75 65 2e 20 20 54 68 65 20 65 78 61 63 74 20  nue.  The exact 
12a40 65 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20  effects of this 
12a50 72 65 74 75 72 6e 20 63 6f 64 65 20 76 61 72 79  return code vary
12a60 20 64 65 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20   depending..    
12a70 20 20 2f 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65    /// on the spe
12a80 63 69 66 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c  cific action, pl
12a90 65 61 73 65 20 72 65 66 65 72 20 74 6f 20 74 68  ease refer to th
12aa0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69  e SQLite core li
12ab0 62 72 61 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f  brary..      ///
12ac0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
12ad0 6f 72 20 66 75 74 68 65 72 20 64 65 74 61 69 6c  or futher detail
12ae0 73 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  s...      /// </
12af0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
12b00 49 67 6e 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d  Ignore = 2..  }.
12b10 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
12b20 79 3e 0d 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20  y>..  /// Class 
12b30 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  used internally 
12b40 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
12b50 20 64 61 74 61 74 79 70 65 20 6f 66 20 61 20 63   datatype of a c
12b60 6f 6c 75 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c  olumn in a resul
12b70 74 73 65 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75  tset..  /// </su
12b80 6d 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e  mmary>..  intern
12b90 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  al sealed class 
12ba0 53 51 4c 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d  SQLiteType..  {.
12bb0 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
12bc0 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  y>..    /// The 
12bd0 44 62 54 79 70 65 20 6f 66 20 74 68 65 20 63 6f  DbType of the co
12be0 6c 75 6d 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e  lumn, or DbType.
12bf0 4f 62 6a 65 63 74 20 69 66 20 69 74 20 63 61 6e  Object if it can
12c00 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e 65  not be determine
12c10 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  d..    /// </sum
12c20 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72  mary>..    inter
12c30 6e 61 6c 20 44 62 54 79 70 65 20 54 79 70 65 3b  nal DbType Type;
12c40 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
12c50 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
12c60 20 61 66 66 69 6e 69 74 79 20 6f 66 20 61 20 63   affinity of a c
12c70 6f 6c 75 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20  olumn, used for 
12c80 65 78 70 72 65 73 73 69 6f 6e 73 20 6f 72 20 77  expressions or w
12c90 68 65 6e 20 54 79 70 65 20 69 73 20 44 62 54 79  hen Type is DbTy
12ca0 70 65 2e 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f  pe.Object..    /
12cb0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
12cc0 20 20 20 69 6e 74 65 72 6e 61 6c 20 54 79 70 65     internal Type
12cd0 41 66 66 69 6e 69 74 79 20 41 66 66 69 6e 69 74  Affinity Affinit
12ce0 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f  y;..  }....  ///
12cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12d40 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
12d50 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54 79  class SQLiteDbTy
12d60 70 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a 20 44  peMap..      : D
12d70 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e 67  ictionary<string
12d80 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  , SQLiteDbTypeMa
12d90 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20  pping>..  {..   
12da0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
12db0 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 70  te Data..      p
12dc0 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61 72  rivate Dictionar
12dd0 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65  y<DbType, SQLite
12de0 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 72  DbTypeMapping> r
12df0 65 76 65 72 73 65 3b 0d 0a 20 20 20 20 20 20 23  everse;..      #
12e00 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
12e10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12e60 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
12e70 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
12e80 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 20  s..      public 
12e90 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28  SQLiteDbTypeMap(
12ea0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 62  )..          : b
12eb0 61 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d 65  ase(new TypeName
12ec0 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28 29  StringComparer()
12ed0 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
12ee0 20 20 20 20 20 20 72 65 76 65 72 73 65 20 3d 20        reverse = 
12ef0 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c 44  new Dictionary<D
12f00 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62 54  bType, SQLiteDbT
12f10 79 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b 0d 0a  ypeMapping>();..
12f20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
12f30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
12f80 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
12f90 65 44 62 54 79 70 65 4d 61 70 28 0d 0a 20 20 20  eDbTypeMap(..   
12fa0 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61 62         IEnumerab
12fb0 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65 4d  le<SQLiteDbTypeM
12fc0 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69  apping> collecti
12fd0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29 0d  on..          ).
12fe0 0a 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69  .          : thi
12ff0 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  s()..      {..  
13000 20 20 20 20 20 20 20 20 41 64 64 28 63 6f 6c 6c          Add(coll
13010 65 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20  ection);..      
13020 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
13030 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
13040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13080 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13090 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 43  #region System.C
130a0 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72  ollections.Gener
130b0 69 63 2e 44 69 63 74 69 6f 6e 61 72 79 20 22 4f  ic.Dictionary "O
130c0 76 65 72 72 69 64 65 73 22 0d 0a 20 20 20 20 20  verrides"..     
130d0 20 70 75 62 6c 69 63 20 6e 65 77 20 69 6e 74 20   public new int 
130e0 43 6c 65 61 72 28 29 0d 0a 20 20 20 20 20 20 7b  Clear()..      {
130f0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74 20  ..          int 
13100 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20  result = 0;.... 
13110 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76           if (rev
13120 65 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  erse != null).. 
13130 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13140 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
13150 20 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f 75 6e   += reverse.Coun
13160 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
13170 20 20 72 65 76 65 72 73 65 2e 43 6c 65 61 72 28    reverse.Clear(
13180 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
13190 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 73  ...          res
131a0 75 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f 75 6e  ult += base.Coun
131b0 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62 61  t;..          ba
131c0 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a 20  se.Clear();.... 
131d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
131e0 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 7d  result;..      }
131f0 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69  ..      #endregi
13200 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f  on....      ////
13210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13250 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23  /////....      #
13260 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 44 62 54  region SQLiteDbT
13270 79 70 65 4d 61 70 70 69 6e 67 20 48 65 6c 70 65  ypeMapping Helpe
13280 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  r Methods..     
13290 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64   public void Add
132a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e  (..          IEn
132b0 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44  umerable<SQLiteD
132c0 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f  bTypeMapping> co
132d0 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20  llection..      
132e0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d 0a      )..      {..
132f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
13300 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  llection == null
13310 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13320 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
13330 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
13340 28 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b 0d  ("collection");.
13350 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f 72  ...          for
13360 65 61 63 68 20 28 53 51 4c 69 74 65 44 62 54 79  each (SQLiteDbTy
13370 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 20 69  peMapping item i
13380 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20  n collection).. 
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64               Add
133a0 28 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d  (item);..      }
133b0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
133c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
133f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13400 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62  ///....      pub
13410 6c 69 63 20 76 6f 69 64 20 41 64 64 28 53 51 4c  lic void Add(SQL
13420 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
13430 20 69 74 65 6d 29 0d 0a 20 20 20 20 20 20 7b 0d   item)..      {.
13440 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69  .          if (i
13450 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tem == null)..  
13460 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
13470 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
13480 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65  llException("ite
13490 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  m");....        
134a0 20 20 69 66 20 28 69 74 65 6d 2e 74 79 70 65 4e    if (item.typeN
134b0 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
134c0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
134d0 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45 78  w new ArgumentEx
134e0 63 65 70 74 69 6f 6e 28 22 69 74 65 6d 20 74 79  ception("item ty
134f0 70 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62  pe name cannot b
13500 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20 20  e null");....   
13510 20 20 20 20 20 20 20 62 61 73 65 2e 41 64 64 28         base.Add(
13520 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c 20 69  item.typeName, i
13530 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tem);....       
13540 20 20 20 69 66 20 28 69 74 65 6d 2e 70 72 69 6d     if (item.prim
13550 61 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ary)..          
13560 20 20 20 20 72 65 76 65 72 73 65 2e 41 64 64 28      reverse.Add(
13570 69 74 65 6d 2e 64 61 74 61 54 79 70 65 2c 20 69  item.dataType, i
13580 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a  tem);..      }..
13590 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
135a0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
135b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
135f0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72 65  ///....      #re
13600 67 69 6f 6e 20 44 62 54 79 70 65 20 48 65 6c 70  gion DbType Help
13610 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
13620 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f    public bool Co
13630 6e 74 61 69 6e 73 4b 65 79 28 44 62 54 79 70 65  ntainsKey(DbType
13640 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d 0a   key)..      {..
13650 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
13660 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  verse == null)..
13670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
13680 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
13690 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
136a0 72 65 76 65 72 73 65 2e 43 6f 6e 74 61 69 6e 73  reverse.Contains
136b0 4b 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20 20 20  Key(key);..     
136c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f   }....      ////
136d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70  /////....      p
13720 75 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47 65  ublic bool TryGe
13730 74 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b 65  tValue(DbType ke
13740 79 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62 54  y, out SQLiteDbT
13750 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65  ypeMapping value
13760 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  )..      {..    
13770 20 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73        if (revers
13780 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
13790 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
137a0 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e         value = n
137b0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
137c0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
137d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
137e0 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75  ..          retu
137f0 72 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47 65  rn reverse.TryGe
13800 74 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20  tValue(key, out 
13810 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d  value);..      }
13820 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ....      //////
13830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13870 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62  ///....      pub
13880 6c 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76 65 28  lic bool Remove(
13890 44 62 54 79 70 65 20 6b 65 79 29 0d 0a 20 20 20  DbType key)..   
138a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
138b0 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20 6e  if (reverse == n
138c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
138d0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
138e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72  ;....          r
138f0 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 52 65  eturn reverse.Re
13900 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20 20 20  move(key);..    
13910 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72    }..      #endr
13920 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  egion..  }....  
13930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
13980 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
13990 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44  ed class SQLiteD
139a0 62 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a 20 20  bTypeMapping..  
139b0 7b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  {..    internal 
139c0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
139d0 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ing(..        st
139e0 72 69 6e 67 20 6e 65 77 54 79 70 65 4e 61 6d 65  ring newTypeName
139f0 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79 70  ,..        DbTyp
13a00 65 20 6e 65 77 44 61 74 61 54 79 70 65 2c 0d 0a  e newDataType,..
13a10 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 65 77          bool new
13a20 50 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20 20  Primary..       
13a30 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20   )..    {..     
13a40 20 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65 77 54   typeName = newT
13a50 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ypeName;..      
13a60 64 61 74 61 54 79 70 65 20 3d 20 6e 65 77 44 61  dataType = newDa
13a70 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 70  taType;..      p
13a80 72 69 6d 61 72 79 20 3d 20 6e 65 77 50 72 69 6d  rimary = newPrim
13a90 61 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  ary;..    }.... 
13aa0 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69     internal stri
13ab0 6e 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  ng typeName;..  
13ac0 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70    internal DbTyp
13ad0 65 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  e dataType;..   
13ae0 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20 70   internal bool p
13af0 72 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d 0a  rimary;..  }....
13b00 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65    internal seale
13b10 64 20 63 6c 61 73 73 20 54 79 70 65 4e 61 6d 65  d class TypeName
13b20 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 20 3a  StringComparer :
13b30 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72   IEqualityCompar
13b40 65 72 3c 73 74 72 69 6e 67 3e 0d 0a 20 20 7b 0d  er<string>..  {.
13b50 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71  .    #region IEq
13b60 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73  ualityComparer<s
13b70 74 72 69 6e 67 3e 20 4d 65 6d 62 65 72 73 0d 0a  tring> Members..
13b80 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
13b90 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 73  Equals(..      s
13ba0 74 72 69 6e 67 20 6c 65 66 74 2c 0d 0a 20 20 20  tring left,..   
13bb0 20 20 20 73 74 72 69 6e 67 20 72 69 67 68 74 0d     string right.
13bc0 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d  .      )..    {.
13bd0 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74  .      return St
13be0 72 69 6e 67 2e 45 71 75 61 6c 73 28 6c 65 66 74  ring.Equals(left
13bf0 2c 20 72 69 67 68 74 2c 20 53 74 72 69 6e 67 43  , right, StringC
13c00 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
13c10 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20  lIgnoreCase);.. 
13c20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
13c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70  ///////....    p
13c80 75 62 6c 69 63 20 69 6e 74 20 47 65 74 48 61 73  ublic int GetHas
13c90 68 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 73 74  hCode(..      st
13ca0 72 69 6e 67 20 76 61 6c 75 65 0d 0a 20 20 20 20  ring value..    
13cb0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
13cc0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f 2f 20 4e    //..      // N
13cd0 4f 54 45 3a 20 54 68 65 20 6f 6e 6c 79 20 74 68  OTE: The only th
13ce0 69 6e 67 20 74 68 61 74 20 77 65 20 6d 75 73 74  ing that we must
13cf0 20 67 75 61 72 61 6e 74 65 65 20 68 65 72 65 2c   guarantee here,
13d00 20 61 63 63 6f 72 64 69 6e 67 0d 0a 20 20 20 20   according..    
13d10 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 74 68    //       to th
13d20 65 20 4d 53 44 4e 20 64 6f 63 75 6d 65 6e 74 61  e MSDN documenta
13d30 74 69 6f 6e 20 66 6f 72 20 49 45 71 75 61 6c 69  tion for IEquali
13d40 74 79 43 6f 6d 70 61 72 65 72 2c 20 69 73 0d 0a  tyComparer, is..
13d50 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
13d60 68 61 74 20 66 6f 72 20 74 77 6f 20 67 69 76 65  hat for two give
13d70 6e 20 73 74 72 69 6e 67 73 2c 20 69 66 20 45 71  n strings, if Eq
13d80 75 61 6c 73 20 72 65 74 75 72 6e 20 74 72 75 65  uals return true
13d90 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 2f 2f 20   then..      // 
13da0 20 20 20 20 20 20 74 68 65 20 74 77 6f 20 73 74        the two st
13db0 72 69 6e 67 73 20 6d 75 73 74 20 68 61 73 68 20  rings must hash 
13dc0 74 6f 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75  to the same valu
13dd0 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a 20 20  e...      //..  
13de0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21 3d      if (value !=
13df0 20 6e 75 6c 6c 29 0d 0a 23 69 66 20 21 50 4c 41   null)..#if !PLA
13e00 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
13e10 4d 45 57 4f 52 4b 0d 0a 20 20 20 20 20 20 20 20  MEWORK..        
13e20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c  return value.ToL
13e30 6f 77 65 72 49 6e 76 61 72 69 61 6e 74 28 29 2e  owerInvariant().
13e40 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a  GetHashCode();..
13e50 23 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 72  #else..        r
13e60 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 4c 6f  eturn value.ToLo
13e70 77 65 72 28 29 2e 47 65 74 48 61 73 68 43 6f 64  wer().GetHashCod
13e80 65 28 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  e();..#endif..  
13e90 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20      else..      
13ea0 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
13eb0 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
13ec0 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a 20 20 20  n("value");..   
13ed0 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
13ee0 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a              on..  }..}..