System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b0efe60198e4701f1cc867947304640c0c434793:


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 69 73  y>..    /// This
02f0: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 75 73   character is us
0300: 65 64 20 74 6f 20 65 73 63 61 70 65 20 6f 74 68  ed to escape oth
0310: 65 72 20 63 68 61 72 61 63 74 65 72 73 2c 20 69  er characters, i
0320: 6e 63 6c 75 64 69 6e 67 20 69 74 73 65 6c 66 2c  ncluding itself,
0330: 20 69 6e 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e   in..    /// con
0340: 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70  nection string p
0350: 72 6f 70 65 72 74 79 20 6e 61 6d 65 73 20 61 6e  roperty names an
0360: 64 20 76 61 6c 75 65 73 2e 0d 0a 20 20 20 20 2f  d values...    /
0370: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0380: 20 20 20 69 6e 74 65 72 6e 61 6c 20 63 6f 6e 73     internal cons
0390: 74 20 63 68 61 72 20 45 73 63 61 70 65 43 68 61  t char EscapeCha
03a0: 72 20 3d 20 27 5c 5c 27 3b 0d 0a 0d 0a 20 20 20  r = '\\';....   
03b0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
03c0: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 68 61      /// This cha
03d0: 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 75 73  racter can be us
03e0: 65 64 20 74 6f 20 77 72 61 70 20 63 6f 6e 6e 65  ed to wrap conne
03f0: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f  ction string pro
0400: 70 65 72 74 79 20 6e 61 6d 65 73 20 61 6e 64 0d  perty names and.
0410: 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 73 2e  .    /// values.
0420: 20 20 4e 6f 72 6d 61 6c 6c 79 2c 20 69 74 20 69    Normally, it i
0430: 73 20 6f 70 74 69 6f 6e 61 6c 3b 20 68 6f 77 65  s optional; howe
0440: 76 65 72 2c 20 77 68 65 6e 20 75 73 65 64 2c 20  ver, when used, 
0450: 69 74 20 6d 75 73 74 20 62 65 20 74 68 65 0d 0a  it must be the..
0460: 20 20 20 20 2f 2f 2f 20 66 69 72 73 74 20 2d 41      /// first -A
0470: 4e 44 2d 20 6c 61 73 74 20 63 68 61 72 61 63 74  ND- last charact
0480: 65 72 20 6f 66 20 74 68 61 74 20 63 6f 6e 6e 65  er of that conne
0490: 63 74 69 6f 6e 20 73 74 72 69 6e 67 20 70 72 6f  ction string pro
04a0: 70 65 72 74 79 20 6e 61 6d 65 20 2d 4f 52 2d 0d  perty name -OR-.
04b0: 0a 20 20 20 20 2f 2f 2f 20 76 61 6c 75 65 2e 0d  .    /// value..
04c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
04d0: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ry>..    interna
04e0: 6c 20 63 6f 6e 73 74 20 63 68 61 72 20 51 75 6f  l const char Quo
04f0: 74 65 43 68 61 72 20 3d 20 27 22 27 3b 0d 0a 0d  teChar = '"';...
0500: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0510: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73  y>..    /// This
0520: 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 20 62   character can b
0530: 65 20 75 73 65 64 20 74 6f 20 77 72 61 70 20 63  e used to wrap c
0540: 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
0550: 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 73 20   property names 
0560: 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c  and..    /// val
0570: 75 65 73 2e 20 20 4e 6f 72 6d 61 6c 6c 79 2c 20  ues.  Normally, 
0580: 69 74 20 69 73 20 6f 70 74 69 6f 6e 61 6c 3b 20  it is optional; 
0590: 68 6f 77 65 76 65 72 2c 20 77 68 65 6e 20 75 73  however, when us
05a0: 65 64 2c 20 69 74 20 6d 75 73 74 20 62 65 20 74  ed, it must be t
05b0: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 66 69 72 73  he..    /// firs
05c0: 74 20 2d 41 4e 44 2d 20 6c 61 73 74 20 63 68 61  t -AND- last cha
05d0: 72 61 63 74 65 72 20 6f 66 20 74 68 61 74 20 63  racter of that c
05e0: 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e 67  onnection string
05f0: 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 20 2d   property name -
0600: 4f 52 2d 0d 0a 20 20 20 20 2f 2f 2f 20 76 61 6c  OR-..    /// val
0610: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
0620: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74  ummary>..    int
0630: 65 72 6e 61 6c 20 63 6f 6e 73 74 20 63 68 61 72  ernal const char
0640: 20 41 6c 74 51 75 6f 74 65 43 68 61 72 20 3d 20   AltQuoteChar = 
0650: 27 5c 27 27 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  '\'';....    ///
0660: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
0670: 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 63 74 65  /// The characte
0680: 72 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 70  r is used to sep
0690: 61 72 61 74 65 20 74 68 65 20 6e 61 6d 65 20 61  arate the name a
06a0: 6e 64 20 76 61 6c 75 65 20 66 6f 72 20 61 20 63  nd value for a c
06b0: 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f  onnection..    /
06c0: 2f 2f 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72  // string proper
06d0: 74 79 2e 20 20 54 68 69 73 20 63 68 61 72 61 63  ty.  This charac
06e0: 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 70 72  ter cannot be pr
06f0: 65 73 65 6e 74 20 69 6e 20 61 6e 79 20 63 6f 6e  esent in any con
0700: 6e 65 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f  nection..    ///
0710: 20 73 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79   string property
0720: 20 6e 61 6d 65 2e 20 20 54 68 69 73 20 63 68 61   name.  This cha
0730: 72 61 63 74 65 72 20 63 61 6e 20 62 65 20 70 72  racter can be pr
0740: 65 73 65 6e 74 20 69 6e 20 61 20 63 6f 6e 6e 65  esent in a conne
0750: 63 74 69 6f 6e 0d 0a 20 20 20 20 2f 2f 2f 20 73  ction..    /// s
0760: 74 72 69 6e 67 20 70 72 6f 70 65 72 74 79 20 76  tring property v
0770: 61 6c 75 65 3b 20 68 6f 77 65 76 65 72 2c 20 74  alue; however, t
0780: 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 61 76  his should be av
0790: 6f 69 64 65 64 20 75 6e 6c 65 73 73 20 64 65 65  oided unless dee
07a0: 6d 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 61 62 73  med..    /// abs
07b0: 6f 6c 75 74 65 6c 79 20 6e 65 63 65 73 73 61 72  olutely necessar
07c0: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  y...    /// </su
07d0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65  mmary>..    inte
07e0: 72 6e 61 6c 20 63 6f 6e 73 74 20 63 68 61 72 20  rnal const char 
07f0: 56 61 6c 75 65 43 68 61 72 20 3d 20 27 3d 27 3b  ValueChar = '=';
0800: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
0810: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0820: 68 69 73 20 63 68 61 72 61 63 74 65 72 20 69 73  his character is
0830: 20 75 73 65 64 20 74 6f 20 73 65 70 61 72 61 74   used to separat
0840: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72  e connection str
0850: 69 6e 67 20 70 72 6f 70 65 72 74 69 65 73 2e 20  ing properties. 
0860: 20 57 68 65 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74   When..    /// t
0870: 68 65 20 22 4e 6f 5f 53 51 4c 69 74 65 43 6f 6e  he "No_SQLiteCon
0880: 6e 65 63 74 69 6f 6e 4e 65 77 50 61 72 73 65 72  nectionNewParser
0890: 22 20 73 65 74 74 69 6e 67 20 69 73 20 65 6e 61  " setting is ena
08a0: 62 6c 65 64 2c 20 74 68 69 73 20 63 68 61 72 61  bled, this chara
08b0: 63 74 65 72 0d 0a 20 20 20 20 2f 2f 2f 20 6d 61  cter..    /// ma
08c0: 79 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20  y not appear in 
08d0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 72 69 6e  connection strin
08e0: 67 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 73  g property names
08f0: 20 2d 4f 52 2d 20 76 61 6c 75 65 73 2e 0d 0a 20   -OR- values... 
0900: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0910: 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
0920: 63 6f 6e 73 74 20 63 68 61 72 20 50 61 69 72 43  const char PairC
0930: 68 61 72 20 3d 20 27 3b 27 3b 0d 0a 0d 0a 20 20  har = ';';....  
0940: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0950: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 73 65 20 61  .    /// These a
0960: 72 65 20 74 68 65 20 63 68 61 72 61 63 74 65 72  re the character
0970: 73 20 74 68 61 74 20 61 72 65 20 73 70 65 63 69  s that are speci
0980: 61 6c 20 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63  al to the connec
0990: 74 69 6f 6e 20 73 74 72 69 6e 67 0d 0a 20 20 20  tion string..   
09a0: 20 2f 2f 2f 20 70 61 72 73 65 72 2e 0d 0a 20 20   /// parser...  
09b0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
09c0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
09d0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 63  tatic readonly c
09e0: 68 61 72 5b 5d 20 53 70 65 63 69 61 6c 43 68 61  har[] SpecialCha
09f0: 72 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20  rs = {..        
0a00: 51 75 6f 74 65 43 68 61 72 2c 20 41 6c 74 51 75  QuoteChar, AltQu
0a10: 6f 74 65 43 68 61 72 2c 20 50 61 69 72 43 68 61  oteChar, PairCha
0a20: 72 2c 20 56 61 6c 75 65 43 68 61 72 2c 20 45 73  r, ValueChar, Es
0a30: 63 61 70 65 43 68 61 72 0d 0a 20 20 20 20 7d 3b  capeChar..    };
0a40: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
0a50: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0a60: 68 65 20 66 61 6c 6c 62 61 63 6b 20 64 65 66 61  he fallback defa
0a70: 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79 70  ult database typ
0a80: 65 20 77 68 65 6e 20 6f 6e 65 20 63 61 6e 6e 6f  e when one canno
0a90: 74 20 62 65 20 6f 62 74 61 69 6e 65 64 20 66 72  t be obtained fr
0aa0: 6f 6d 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 65  om an..    /// e
0ab0: 78 69 73 74 69 6e 67 20 63 6f 6e 6e 65 63 74 69  xisting connecti
0ac0: 6f 6e 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20  on instance...  
0ad0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
0ae0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 6f  ..    private co
0af0: 6e 73 74 20 44 62 54 79 70 65 20 46 61 6c 6c 62  nst DbType Fallb
0b00: 61 63 6b 44 65 66 61 75 6c 74 44 62 54 79 70 65  ackDefaultDbType
0b10: 20 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74   = DbType.Object
0b20: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
0b30: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
0b40: 54 68 65 20 66 61 6c 6c 62 61 63 6b 20 64 65 66  The fallback def
0b50: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 74 79  ault database ty
0b60: 70 65 20 6e 61 6d 65 20 77 68 65 6e 20 6f 6e 65  pe name when one
0b70: 20 63 61 6e 6e 6f 74 20 62 65 20 6f 62 74 61 69   cannot be obtai
0b80: 6e 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20 2f 2f  ned from..    //
0b90: 2f 20 61 6e 20 65 78 69 73 74 69 6e 67 20 63 6f  / an existing co
0ba0: 6e 6e 65 63 74 69 6f 6e 20 69 6e 73 74 61 6e 63  nnection instanc
0bb0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
0bc0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76  mmary>..    priv
0bd0: 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
0be0: 6e 6c 79 20 73 74 72 69 6e 67 20 46 61 6c 6c 62  nly string Fallb
0bf0: 61 63 6b 44 65 66 61 75 6c 74 54 79 70 65 4e 61  ackDefaultTypeNa
0c00: 6d 65 20 3d 20 53 74 72 69 6e 67 2e 45 6d 70 74  me = String.Empt
0c10: 79 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  y;....    /// <s
0c20: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0c30: 20 54 68 65 20 76 61 6c 75 65 20 66 6f 72 20 74   The value for t
0c40: 68 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28 65  he Unix epoch (e
0c50: 2e 67 2e 20 4a 61 6e 75 61 72 79 20 31 2c 20 31  .g. January 1, 1
0c60: 39 37 30 20 61 74 20 6d 69 64 6e 69 67 68 74 2c  970 at midnight,
0c70: 20 69 6e 20 55 54 43 29 2e 0d 0a 20 20 20 20 2f   in UTC)...    /
0c80: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
0c90: 20 20 20 70 72 6f 74 65 63 74 65 64 20 73 74 61     protected sta
0ca0: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 44 61 74  tic readonly Dat
0cb0: 65 54 69 6d 65 20 55 6e 69 78 45 70 6f 63 68 20  eTime UnixEpoch 
0cc0: 3d 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 20 44  =..        new D
0cd0: 61 74 65 54 69 6d 65 28 31 39 37 30 2c 20 31 2c  ateTime(1970, 1,
0ce0: 20 31 2c 20 30 2c 20 30 2c 20 30 2c 20 44 61 74   1, 0, 0, 0, Dat
0cf0: 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 29 3b 0d  eTimeKind.Utc);.
0d00: 0a 0d 0a 20 20 20 20 23 70 72 61 67 6d 61 20 77  ...    #pragma w
0d10: 61 72 6e 69 6e 67 20 64 69 73 61 62 6c 65 20 34  arning disable 4
0d20: 31 34 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  14..    /// <sum
0d30: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
0d40: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
0d50: 4f 4c 45 20 41 75 74 6f 6d 61 74 69 6f 6e 20 65  OLE Automation e
0d60: 70 6f 63 68 20 72 65 70 72 65 73 65 6e 74 65 64  poch represented
0d70: 20 61 73 20 61 20 4a 75 6c 69 61 6e 20 64 61 79   as a Julian day
0d80: 2e 20 20 54 68 69 73 0d 0a 20 20 20 20 2f 2f 2f  .  This..    ///
0d90: 20 66 69 65 6c 64 20 63 61 6e 6e 6f 74 20 62 65   field cannot be
0da0: 20 72 65 6d 6f 76 65 64 20 61 73 20 74 68 65 20   removed as the 
0db0: 74 65 73 74 20 73 75 69 74 65 20 72 65 6c 69 65  test suite relie
0dc0: 73 20 75 70 6f 6e 20 69 74 2e 0d 0a 20 20 20 20  s upon it...    
0dd0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0de0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0df0: 69 63 20 72 65 61 64 6f 6e 6c 79 20 64 6f 75 62  ic readonly doub
0e00: 6c 65 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e  le OleAutomation
0e10: 45 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 79  EpochAsJulianDay
0e20: 20 3d 20 32 34 31 35 30 31 38 2e 35 3b 0d 0a 20   = 2415018.5;.. 
0e30: 20 20 20 23 70 72 61 67 6d 61 20 77 61 72 6e 69     #pragma warni
0e40: 6e 67 20 72 65 73 74 6f 72 65 20 34 31 34 0d 0a  ng restore 414..
0e50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0e60: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
0e70: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 66   format string f
0e80: 6f 72 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75  or DateTime valu
0e90: 65 73 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68  es when using th
0ea0: 65 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  e InvariantCultu
0eb0: 72 65 20 6f 72 20 43 75 72 72 65 6e 74 43 75 6c  re or CurrentCul
0ec0: 74 75 72 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20  ture formats... 
0ed0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
0ee0: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63  >..    private c
0ef0: 6f 6e 73 74 20 73 74 72 69 6e 67 20 46 75 6c 6c  onst string Full
0f00: 46 6f 72 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d  Format = "yyyy-M
0f10: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66  M-ddTHH:mm:ss.ff
0f20: 66 66 66 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20  fffffK";....    
0f30: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0f40: 20 20 20 2f 2f 2f 20 54 68 69 73 20 69 73 20 74     /// This is t
0f50: 68 65 20 6d 69 6e 69 6d 75 6d 20 4a 75 6c 69 61  he minimum Julia
0f60: 6e 20 44 61 79 20 76 61 6c 75 65 20 73 75 70 70  n Day value supp
0f70: 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 6c 69  orted by this li
0f80: 62 72 61 72 79 0d 0a 20 20 20 20 2f 2f 2f 20 28  brary..    /// (
0f90: 31 34 38 37 33 31 31 36 33 32 30 30 30 30 30 29  148731163200000)
0fa0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
0fb0: 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61  mary>..    priva
0fc0: 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
0fd0: 6c 79 20 6c 6f 6e 67 20 4d 69 6e 69 6d 75 6d 4a  ly long MinimumJ
0fe0: 64 20 3d 20 63 6f 6d 70 75 74 65 4a 44 28 44 61  d = computeJD(Da
0ff0: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 29  teTime.MinValue)
1000: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
1010: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1020: 54 68 69 73 20 69 73 20 74 68 65 20 6d 61 78 69  This is the maxi
1030: 6d 75 6d 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  mum Julian Day v
1040: 61 6c 75 65 20 73 75 70 70 6f 72 74 65 64 20 62  alue supported b
1050: 79 20 74 68 69 73 20 6c 69 62 72 61 72 79 0d 0a  y this library..
1060: 20 20 20 20 2f 2f 2f 20 28 34 36 34 32 36 39 30      /// (4642690
1070: 36 30 37 39 39 30 30 30 29 2e 0d 0a 20 20 20 20  60799000)...    
1080: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
1090: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
10a0: 69 63 20 72 65 61 64 6f 6e 6c 79 20 6c 6f 6e 67  ic readonly long
10b0: 20 4d 61 78 69 6d 75 6d 4a 64 20 3d 20 63 6f 6d   MaximumJd = com
10c0: 70 75 74 65 4a 44 28 44 61 74 65 54 69 6d 65 2e  puteJD(DateTime.
10d0: 4d 61 78 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20  MaxValue);....  
10e0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
10f0: 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61  .    /// An arra
1100: 79 20 6f 66 20 49 53 4f 2d 38 36 30 31 20 44 61  y of ISO-8601 Da
1110: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 74  teTime formats t
1120: 68 61 74 20 77 65 20 73 75 70 70 6f 72 74 20 70  hat we support p
1130: 61 72 73 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f  arsing...    ///
1140: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
1150: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
1160: 73 74 72 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69  string[] _dateti
1170: 6d 65 46 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20  meFormats = new 
1180: 73 74 72 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20  string[] {..    
1190: 20 20 22 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20    "THHmmssK",.. 
11a0: 20 20 20 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a       "THHmmK",..
11b0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e        "HH:mm:ss.
11c0: 46 46 46 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20  FFFFFFFK",..    
11d0: 20 20 22 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a    "HH:mm:ssK",..
11e0: 20 20 20 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d        "HH:mmK",.
11f0: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d  .      "yyyy-MM-
1200: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
1210: 46 46 46 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20  FFFK", /* NOTE: 
1220: 55 54 43 20 64 65 66 61 75 6c 74 20 28 35 29 2e  UTC default (5).
1230: 20 2a 2f 0d 0a 20 20 20 20 20 20 22 79 79 79 79   */..      "yyyy
1240: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b  -MM-dd HH:mm:ssK
1250: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d  ",..      "yyyy-
1260: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a  MM-dd HH:mmK",..
1270: 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64        "yyyy-MM-d
1280: 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  dTHH:mm:ss.FFFFF
1290: 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79  FFK",..      "yy
12a0: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22  yy-MM-ddTHH:mmK"
12b0: 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d  ,..      "yyyy-M
12c0: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c  M-ddTHH:mm:ssK",
12d0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64  ..      "yyyyMMd
12e0: 64 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20  dHHmmssK",..    
12f0: 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b    "yyyyMMddHHmmK
1300: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d  ",..      "yyyyM
1310: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46  MddTHHmmssFFFFFF
1320: 46 4b 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48  FK",..      "THH
1330: 6d 6d 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 54  mmss",..      "T
1340: 48 48 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48  HHmm",..      "H
1350: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22  H:mm:ss.FFFFFFF"
1360: 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a  ,..      "HH:mm:
1370: 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a  ss",..      "HH:
1380: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  mm",..      "yyy
1390: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73  y-MM-dd HH:mm:ss
13a0: 2e 46 46 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f  .FFFFFFF", /* NO
13b0: 54 45 3a 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61  TE: Non-UTC defa
13c0: 75 6c 74 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20  ult (19). */..  
13d0: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20      "yyyy-MM-dd 
13e0: 48 48 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20  HH:mm:ss",..    
13f0: 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48    "yyyy-MM-dd HH
1400: 3a 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79  :mm",..      "yy
1410: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73  yy-MM-ddTHH:mm:s
1420: 73 2e 46 46 46 46 46 46 46 22 2c 0d 0a 20 20 20  s.FFFFFFF",..   
1430: 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48     "yyyy-MM-ddTH
1440: 48 3a 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79  H:mm",..      "y
1450: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a  yyy-MM-ddTHH:mm:
1460: 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  ss",..      "yyy
1470: 79 4d 4d 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20  yMMddHHmmss",.. 
1480: 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48       "yyyyMMddHH
1490: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79  mm",..      "yyy
14a0: 79 4d 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46  yMMddTHHmmssFFFF
14b0: 46 46 46 22 2c 0d 0a 20 20 20 20 20 20 22 79 79  FFF",..      "yy
14c0: 79 79 2d 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20  yy-MM-dd",..    
14d0: 20 20 22 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20    "yyyyMMdd",.. 
14e0: 20 20 20 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d       "yy-MM-dd".
14f0: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
1500: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1510: 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e    /// The intern
1520: 61 6c 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61  al default forma
1530: 74 20 66 6f 72 20 55 54 43 20 44 61 74 65 54 69  t for UTC DateTi
1540: 6d 65 20 76 61 6c 75 65 73 20 77 68 65 6e 20 63  me values when c
1550: 6f 6e 76 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f  onverting..    /
1560: 2f 2f 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d  // to a string..
1570: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1580: 72 79 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65  ry>..    private
1590: 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79   static readonly
15a0: 20 73 74 72 69 6e 67 20 5f 64 61 74 65 74 69 6d   string _datetim
15b0: 65 46 6f 72 6d 61 74 55 74 63 20 3d 20 5f 64 61  eFormatUtc = _da
15c0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d  tetimeFormats[5]
15d0: 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ;....    /// <su
15e0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
15f0: 54 68 65 20 69 6e 74 65 72 6e 61 6c 20 64 65 66  The internal def
1600: 61 75 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20  ault format for 
1610: 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65 20 76  local DateTime v
1620: 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e 76 65  alues when conve
1630: 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74  rting..    /// t
1640: 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20  o a string...   
1650: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1660: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
1670: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72  tic readonly str
1680: 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72  ing _datetimeFor
1690: 6d 61 74 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65  matLocal = _date
16a0: 74 69 6d 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b  timeFormats[19];
16b0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
16c0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41  mary>..    /// A
16d0: 6e 20 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67  n UTF-8 Encoding
16e0: 20 69 6e 73 74 61 6e 63 65 2c 20 73 6f 20 77 65   instance, so we
16f0: 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 73 74 72   can convert str
1700: 69 6e 67 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d  ings to and from
1710: 20 55 54 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20   UTF-8..    /// 
1720: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
1730: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 45  private static E
1740: 6e 63 6f 64 69 6e 67 20 5f 75 74 66 38 20 3d 20  ncoding _utf8 = 
1750: 6e 65 77 20 55 54 46 38 45 6e 63 6f 64 69 6e 67  new UTF8Encoding
1760: 28 29 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  ();..    /// <su
1770: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1780: 54 68 65 20 64 65 66 61 75 6c 74 20 44 61 74 65  The default Date
1790: 54 69 6d 65 20 66 6f 72 6d 61 74 20 66 6f 72 20  Time format for 
17a0: 74 68 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a  this instance...
17b0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17c0: 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
17d0: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61   SQLiteDateForma
17e0: 74 73 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d  ts _datetimeForm
17f0: 61 74 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  at;..    /// <su
1800: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
1810: 54 68 65 20 64 65 66 61 75 6c 74 20 44 61 74 65  The default Date
1820: 54 69 6d 65 4b 69 6e 64 20 66 6f 72 20 74 68 69  TimeKind for thi
1830: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
1840: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1850: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61  .    internal Da
1860: 74 65 54 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65  teTimeKind _date
1870: 74 69 6d 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f  timeKind;..    /
1880: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
1890: 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c    /// The defaul
18a0: 74 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  t DateTime forma
18b0: 74 20 73 74 72 69 6e 67 20 66 6f 72 20 74 68 69  t string for thi
18c0: 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20  s instance...   
18d0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18e0: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74  .    internal st
18f0: 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f  ring _datetimeFo
1900: 72 6d 61 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c  rmatString = nul
1910: 6c 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  l;..    /// <sum
1920: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  mary>..    /// I
1930: 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 63  nitializes the c
1940: 6f 6e 76 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d  onversion class.
1950: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
1960: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
1970: 72 61 6d 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54  ram name="fmt">T
1980: 68 65 20 64 65 66 61 75 6c 74 20 64 61 74 65 2f  he default date/
1990: 74 69 6d 65 20 66 6f 72 6d 61 74 20 74 6f 20 75  time format to u
19a0: 73 65 20 66 6f 72 20 74 68 69 73 20 69 6e 73 74  se for this inst
19b0: 61 6e 63 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  ance</param>..  
19c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
19d0: 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74  e="kind">The Dat
19e0: 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65  eTimeKind to use
19f0: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
1a00: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
1a10: 66 6d 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44  fmtString">The D
1a20: 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73  ateTime format s
1a30: 74 72 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70  tring to use.</p
1a40: 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72  aram>..    inter
1a50: 6e 61 6c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72  nal SQLiteConver
1a60: 74 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69  t(..        SQLi
1a70: 74 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6d  teDateFormats fm
1a80: 74 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65  t,..        Date
1a90: 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a  TimeKind kind,..
1aa0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
1ab0: 6d 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  mtString..      
1ac0: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
1ad0: 20 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61    _datetimeForma
1ae0: 74 20 3d 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20  t = fmt;..      
1af0: 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20  _datetimeKind = 
1b00: 6b 69 6e 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61  kind;..      _da
1b10: 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69  tetimeFormatStri
1b20: 6e 67 20 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d  ng = fmtString;.
1b30: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72  .    }....    #r
1b40: 65 67 69 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76  egion UTF-8 Conv
1b50: 65 72 73 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73  ersion Functions
1b60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
1b70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
1b80: 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 74  verts a string t
1b90: 6f 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  o a UTF-8 encode
1ba0: 64 20 62 79 74 65 20 61 72 72 61 79 20 73 69 7a  d byte array siz
1bb0: 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 20  ed to include a 
1bc0: 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67  null-terminating
1bd0: 20 63 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20   character...   
1be0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
1bf0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
1c00: 6e 61 6d 65 3d 22 73 6f 75 72 63 65 54 65 78 74  name="sourceText
1c10: 22 3e 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20  ">The string to 
1c20: 63 6f 6e 76 65 72 74 20 74 6f 20 55 54 46 2d 38  convert to UTF-8
1c30: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
1c40: 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 62 79 74  / <returns>A byt
1c50: 65 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69  e array containi
1c60: 6e 67 20 74 68 65 20 63 6f 6e 76 65 72 74 65 64  ng the converted
1c70: 20 73 74 72 69 6e 67 20 70 6c 75 73 20 61 6e 20   string plus an 
1c80: 65 78 74 72 61 20 30 20 74 65 72 6d 69 6e 61 74  extra 0 terminat
1c90: 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 65 20  ing byte at the 
1ca0: 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 61 79  end of the array
1cb0: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
1cc0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
1cd0: 79 74 65 5b 5d 20 54 6f 55 54 46 38 28 73 74 72  yte[] ToUTF8(str
1ce0: 69 6e 67 20 73 6f 75 72 63 65 54 65 78 74 29 0d  ing sourceText).
1cf0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66  .    {..      if
1d00: 20 28 73 6f 75 72 63 65 54 65 78 74 20 3d 3d 20   (sourceText == 
1d10: 6e 75 6c 6c 29 20 72 65 74 75 72 6e 20 6e 75 6c  null) return nul
1d20: 6c 3b 0d 0a 20 20 20 20 20 20 42 79 74 65 5b 5d  l;..      Byte[]
1d30: 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20 20   byteArray;..   
1d40: 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20 5f 75     int nlen = _u
1d50: 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75 6e 74  tf8.GetByteCount
1d60: 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b 20 31  (sourceText) + 1
1d70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 65 41  ;....      byteA
1d80: 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65 5b  rray = new byte[
1d90: 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 6e 6c  nlen];..      nl
1da0: 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 42 79  en = _utf8.GetBy
1db0: 74 65 73 28 73 6f 75 72 63 65 54 65 78 74 2c 20  tes(sourceText, 
1dc0: 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e 4c 65  0, sourceText.Le
1dd0: 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61 79 2c  ngth, byteArray,
1de0: 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79 74 65   0);..      byte
1df0: 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20 30 3b  Array[nlen] = 0;
1e00: 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  ....      return
1e10: 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 20 20   byteArray;..   
1e20: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73   }....    /// <s
1e30: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1e40: 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74 65 54   Convert a DateT
1e50: 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38 20 65  ime to a UTF-8 e
1e60: 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74 65 72  ncoded, zero-ter
1e70: 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61 72 72  minated byte arr
1e80: 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ay...    /// </s
1e90: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
1ea0: 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20   <remarks>..    
1eb0: 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 69 6f  /// This functio
1ec0: 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e  n is a convenien
1ed0: 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 69  ce function, whi
1ee0: 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 20 54  ch first calls T
1ef0: 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 68 65  oString() on the
1f00: 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64 20 74   DateTime, and t
1f10: 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54 46 38  hen calls ToUTF8
1f20: 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20 20 20  () with the..   
1f30: 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65 73 75   /// string resu
1f40: 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  lt...    /// </r
1f50: 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f  emarks>..    ///
1f60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
1f70: 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54 68 65  teTimeValue">The
1f80: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e   DateTime to con
1f90: 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  vert.</param>.. 
1fa0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
1fb0: 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  The UTF-8 encode
1fc0: 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c 75 64  d string, includ
1fd0: 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e 61 74  ing a 0 terminat
1fe0: 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 65 20  ing byte at the 
1ff0: 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 61 79  end of the array
2000: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
2010: 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d 20 54   public byte[] T
2020: 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65 20 64  oUTF8(DateTime d
2030: 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d 0a 20  ateTimeValue).. 
2040: 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75     {..      retu
2050: 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74 72 69  rn ToUTF8(ToStri
2060: 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75 65  ng(dateTimeValue
2070: 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ));..    }....  
2080: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
2090: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
20a0: 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  s a UTF-8 encode
20b0: 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20  d IntPtr of the 
20c0: 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68  specified length
20d0: 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 74 72   into a .NET str
20e0: 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ing..    /// </s
20f0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2100: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61   <param name="na
2110: 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 65 20  tivestring">The 
2120: 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
2130: 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 65 20  emory where the 
2140: 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 73 20  UTF-8 string is 
2150: 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d 3e 0d  encoded</param>.
2160: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
2170: 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69  name="nativestri
2180: 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d 62 65  nglen">The numbe
2190: 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 64 65  r of bytes to de
21a0: 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  code</param>..  
21b0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41    /// <returns>A
21c0: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
21d0: 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 74 65  ng the translate
21e0: 64 20 63 68 61 72 61 63 74 65 72 28 73 29 3c 2f  d character(s)</
21f0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
2200: 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 74 72  blic virtual str
2210: 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49 6e 74  ing ToString(Int
2220: 50 74 72 20 6e 61 74 69 76 65 73 74 72 69 6e 67  Ptr nativestring
2230: 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74 72 69  , int nativestri
2240: 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a 20  nglen)..    {.. 
2250: 20 20 20 20 20 72 65 74 75 72 6e 20 55 54 46 38       return UTF8
2260: 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76 65 73  ToString(natives
2270: 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73 74 72  tring, nativestr
2280: 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d  inglen);..    }.
2290: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
22a0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
22b0: 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 20 65  nverts a UTF-8 e
22c0: 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 6f 66  ncoded IntPtr of
22d0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 6c   the specified l
22e0: 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45  ength into a .NE
22f0: 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f  T string..    //
2300: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
2310: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
2320: 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e 67 22  e="nativestring"
2330: 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  >The pointer to 
2340: 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 72 65  the memory where
2350: 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 69 6e   the UTF-8 strin
2360: 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61  g is encoded</pa
2370: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
2380: 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76  aram name="nativ
2390: 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20  estringlen">The 
23a0: 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
23b0: 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d  to decode</param
23c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
23d0: 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e  rns>A string con
23e0: 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61 6e  taining the tran
23f0: 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 65 72  slated character
2400: 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  (s)</returns>.. 
2410: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
2420: 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f 53 74   string UTF8ToSt
2430: 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61 74 69  ring(IntPtr nati
2440: 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20 6e 61  vestring, int na
2450: 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 0d 0a  tivestringlen)..
2460: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20      {..      if 
2470: 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20 3d 3d  (nativestring ==
2480: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c 7c 20   IntPtr.Zero || 
2490: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20  nativestringlen 
24a0: 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53 74 72  == 0) return Str
24b0: 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 20 20  ing.Empty;..    
24c0: 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72 69    if (nativestri
24d0: 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20 20 20  nglen < 0)..    
24e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 61 74    {..        nat
24f0: 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d 20 30  ivestringlen = 0
2500: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 69  ;....        whi
2510: 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65 61 64  le (Marshal.Read
2520: 42 79 74 65 28 6e 61 74 69 76 65 73 74 72 69 6e  Byte(nativestrin
2530: 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c  g, nativestringl
2540: 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20 20 20  en) != 0)..     
2550: 20 20 20 20 20 6e 61 74 69 76 65 73 74 72 69 6e       nativestrin
2560: 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20  glen++;....     
2570: 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 72     if (nativestr
2580: 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 65 74  inglen == 0) ret
2590: 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  urn String.Empty
25a0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  ;..      }....  
25b0: 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65 41      byte[] byteA
25c0: 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 65 5b  rray = new byte[
25d0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 5d  nativestringlen]
25e0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72 73 68  ;....      Marsh
25f0: 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65 73 74  al.Copy(nativest
2600: 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61 79 2c  ring, byteArray,
2610: 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67   0, nativestring
2620: 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  len);....      r
2630: 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65 74 53  eturn _utf8.GetS
2640: 74 72 69 6e 67 28 62 79 74 65 41 72 72 61 79 2c  tring(byteArray,
2650: 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 6e 67   0, nativestring
2660: 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20  len);..    }..  
2670: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2680: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
26d0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 44  ...    #region D
26e0: 61 74 65 54 69 6d 65 20 43 6f 6e 76 65 72 73 69  ateTime Conversi
26f0: 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a 20 20  on Functions..  
2700: 20 20 23 72 65 67 69 6f 6e 20 4e 65 77 20 4a 75    #region New Ju
2710: 6c 69 61 6e 20 44 61 79 20 43 6f 6e 76 65 72 73  lian Day Convers
2720: 69 6f 6e 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ion Methods..   
2730: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
2740: 20 20 20 20 2f 2f 2f 20 43 68 65 63 6b 73 20 69      /// Checks i
2750: 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  f the specified 
2760: 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34  <see cref="Int64
2770: 22 20 2f 3e 20 69 73 20 77 69 74 68 69 6e 20 74  " /> is within t
2780: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 75 70 70  he..    /// supp
2790: 6f 72 74 65 64 20 72 61 6e 67 65 20 66 6f 72 20  orted range for 
27a0: 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  a Julian Day val
27b0: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
27c0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
27d0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64   <param name="jd
27e0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
27f0: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
2800: 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20   to check...    
2810: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
2820: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
2830: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
2840: 6f 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69  o if the specifi
2850: 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61  ed Julian Day va
2860: 6c 75 65 20 69 73 20 69 6e 20 74 68 65 20 73 75  lue is in the su
2870: 70 70 6f 72 74 65 64 0d 0a 20 20 20 20 2f 2f 2f  pported..    ///
2880: 20 72 61 6e 67 65 3b 20 6f 74 68 65 72 77 69 73   range; otherwis
2890: 65 2c 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 2f 2f  e, zero...    //
28a0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
28b0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
28c0: 20 62 6f 6f 6c 20 69 73 56 61 6c 69 64 4a 64 28   bool isValidJd(
28d0: 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a  ..        long j
28e0: 64 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  d..        )..  
28f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
2900: 75 72 6e 20 28 28 6a 64 20 3e 3d 20 4d 69 6e 69  urn ((jd >= Mini
2910: 6d 75 6d 4a 64 29 20 26 26 20 28 6a 64 20 3c 3d  mumJd) && (jd <=
2920: 20 4d 61 78 69 6d 75 6d 4a 64 29 29 3b 0d 0a 20   MaximumJd));.. 
2930: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f     }....    ////
2940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f  ///////....    /
2990: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
29a0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
29b0: 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75   Julian Day valu
29c0: 65 20 66 72 6f 6d 20 61 20 3c 73 65 65 20 63 72  e from a <see cr
29d0: 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 74  ef="Double" /> t
29e0: 6f 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  o an..    /// <s
29f0: 65 65 20 63 72 65 66 3d 22 49 6e 74 36 34 22 20  ee cref="Int64" 
2a00: 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  />...    /// </s
2a10: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
2a20: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75   <param name="ju
2a30: 6c 69 61 6e 44 61 79 22 3e 0d 0a 20 20 20 20 2f  lianDay">..    /
2a40: 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20 44 61  // The Julian Da
2a50: 79 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f 75  y <see cref="Dou
2a60: 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f  ble" /> value to
2a70: 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f   convert...    /
2a80: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
2a90: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a   /// <returns>..
2aa0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 75      /// The resu
2ab0: 6c 74 69 6e 67 20 4a 75 6c 69 61 6e 20 44 61 79  lting Julian Day
2ac0: 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
2ad0: 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  4" /> value...  
2ae0: 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
2af0: 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74  ..    private st
2b00: 61 74 69 63 20 6c 6f 6e 67 20 44 6f 75 62 6c 65  atic long Double
2b10: 54 6f 4a 64 28 0d 0a 20 20 20 20 20 20 20 20 64  ToJd(..        d
2b20: 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79 0d  ouble julianDay.
2b30: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
2b40: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
2b50: 6e 20 28 6c 6f 6e 67 29 4d 61 74 68 2e 52 6f 75  n (long)Math.Rou
2b60: 6e 64 28 6a 75 6c 69 61 6e 44 61 79 20 2a 20 38  nd(julianDay * 8
2b70: 36 34 30 30 30 30 30 2e 30 29 3b 0d 0a 20 20 20  6400000.0);..   
2b80: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f   }....    //////
2b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bd0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  /////....    ///
2be0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
2bf0: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 4a  /// Converts a J
2c00: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 20  ulian Day value 
2c10: 66 72 6f 6d 20 61 6e 20 3c 73 65 65 20 63 72 65  from an <see cre
2c20: 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 74 6f 20  f="Int64" /> to 
2c30: 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  a..    /// <see 
2c40: 63 72 65 66 3d 22 44 6f 75 62 6c 65 22 20 2f 3e  cref="Double" />
2c50: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
2c60: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
2c70: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 64 22 3e  param name="jd">
2c80: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 4a 75  ..    /// The Ju
2c90: 6c 69 61 6e 20 44 61 79 20 3c 73 65 65 20 63 72  lian Day <see cr
2ca0: 65 66 3d 22 49 6e 74 36 34 22 20 2f 3e 20 76 61  ef="Int64" /> va
2cb0: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d  lue to convert..
2cc0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
2cd0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
2ce0: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
2cf0: 65 20 72 65 73 75 6c 74 69 6e 67 20 4a 75 6c 69  e resulting Juli
2d00: 61 6e 20 44 61 79 20 3c 73 65 65 20 63 72 65 66  an Day <see cref
2d10: 3d 22 44 6f 75 62 6c 65 22 20 2f 3e 20 76 61 6c  ="Double" /> val
2d20: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  ue...    /// </r
2d30: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 72 69  eturns>..    pri
2d40: 76 61 74 65 20 73 74 61 74 69 63 20 64 6f 75 62  vate static doub
2d50: 6c 65 20 4a 64 54 6f 44 6f 75 62 6c 65 28 0d 0a  le JdToDouble(..
2d60: 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6a 64 0d          long jd.
2d70: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
2d80: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
2d90: 6e 20 28 64 6f 75 62 6c 65 29 28 6a 64 20 2f 20  n (double)(jd / 
2da0: 38 36 34 30 30 30 30 30 2e 30 29 3b 0d 0a 20 20  86400000.0);..  
2db0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
2dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e00: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f  //////....    //
2e10: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
2e20: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
2e30: 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65  Julian Day value
2e40: 20 74 6f 20 61 20 3c 73 65 65 20 63 72 65 66 3d   to a <see cref=
2e50: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 2e 0d 0a  "DateTime" />...
2e60: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74      /// This met
2e70: 68 6f 64 20 77 61 73 20 74 72 61 6e 73 6c 61 74  hod was translat
2e80: 65 64 20 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d  ed from the "com
2e90: 70 75 74 65 59 4d 44 22 20 66 75 6e 63 74 69 6f  puteYMD" functio
2ea0: 6e 20 69 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f  n in the..    //
2eb0: 2f 20 22 64 61 74 65 2e 63 22 20 66 69 6c 65 20  / "date.c" file 
2ec0: 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65  belonging to the
2ed0: 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62   SQLite core lib
2ee0: 72 61 72 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  rary...    /// <
2ef0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
2f00: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
2f10: 6a 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  jd">..    /// Th
2f20: 65 20 4a 75 6c 69 61 6e 20 44 61 79 20 76 61 6c  e Julian Day val
2f30: 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0d 0a  ue to convert...
2f40: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
2f50: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
2f60: 20 6e 61 6d 65 3d 22 62 61 64 56 61 6c 75 65 22   name="badValue"
2f70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c  >..    /// The <
2f80: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
2f90: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20 74 6f 20  me" /> value to 
2fa0: 72 65 74 75 72 6e 20 69 6e 20 74 68 65 20 65 76  return in the ev
2fb0: 65 6e 74 20 74 68 61 74 20 74 68 65 0d 0a 20 20  ent that the..  
2fc0: 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20 44 61 79    /// Julian Day
2fd0: 20 69 73 20 6f 75 74 20 6f 66 20 74 68 65 20 73   is out of the s
2fe0: 75 70 70 6f 72 74 65 64 20 72 61 6e 67 65 2e 20  upported range. 
2ff0: 20 49 66 20 74 68 69 73 20 76 61 6c 75 65 20 69   If this value i
3000: 73 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 2f 2f 2f  s null,..    ///
3010: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 69   an exception wi
3020: 6c 6c 20 62 65 20 74 68 72 6f 77 6e 20 69 6e 73  ll be thrown ins
3030: 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tead...    /// <
3040: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
3050: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
3060: 2f 2f 2f 20 41 20 3c 73 65 65 20 63 72 65 66 3d  /// A <see cref=
3070: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
3080: 6c 75 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  lue that contain
3090: 73 20 74 68 65 20 79 65 61 72 2c 20 6d 6f 6e 74  s the year, mont
30a0: 68 2c 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20  h, and..    /// 
30b0: 64 61 79 20 76 61 6c 75 65 73 20 74 68 61 74 20  day values that 
30c0: 61 72 65 20 63 6c 6f 73 65 73 74 20 74 6f 20 74  are closest to t
30d0: 68 65 20 73 70 65 63 69 66 69 65 64 20 4a 75 6c  he specified Jul
30e0: 69 61 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a  ian Day value...
30f0: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
3100: 73 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20  s>..    private 
3110: 73 74 61 74 69 63 20 44 61 74 65 54 69 6d 65 20  static DateTime 
3120: 63 6f 6d 70 75 74 65 59 4d 44 28 0d 0a 20 20 20  computeYMD(..   
3130: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 2c 0d 0a 20       long jd,.. 
3140: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 3f         DateTime?
3150: 20 62 61 64 56 61 6c 75 65 0d 0a 20 20 20 20 20   badValue..     
3160: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
3170: 20 20 20 20 20 69 66 20 28 21 69 73 56 61 6c 69       if (!isVali
3180: 64 4a 64 28 6a 64 29 29 0d 0a 20 20 20 20 20 20  dJd(jd))..      
3190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31a0: 20 69 66 20 28 62 61 64 56 61 6c 75 65 20 3d 3d   if (badValue ==
31b0: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
31c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31d0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
31e0: 20 41 72 67 75 6d 65 6e 74 45 78 63 65 70 74 69   ArgumentExcepti
31f0: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3200: 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 61 20           "Not a 
3210: 73 75 70 70 6f 72 74 65 64 20 4a 75 6c 69 61 6e  supported Julian
3220: 20 44 61 79 20 76 61 6c 75 65 2e 22 29 3b 0d 0a   Day value.");..
3230: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
3240: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3250: 75 72 6e 20 28 44 61 74 65 54 69 6d 65 29 62 61  urn (DateTime)ba
3260: 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  dValue;..       
3270: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e   }....        in
3280: 74 20 5a 2c 20 41 2c 20 42 2c 20 43 2c 20 44 2c  t Z, A, B, C, D,
3290: 20 45 2c 20 58 31 3b 0d 0a 0d 0a 20 20 20 20 20   E, X1;....     
32a0: 20 20 20 5a 20 3d 20 28 69 6e 74 29 28 28 6a 64     Z = (int)((jd
32b0: 20 2b 20 34 33 32 30 30 30 30 30 29 20 2f 20 38   + 43200000) / 8
32c0: 36 34 30 30 30 30 30 29 3b 0d 0a 20 20 20 20 20  6400000);..     
32d0: 20 20 20 41 20 3d 20 28 69 6e 74 29 28 28 5a 20     A = (int)((Z 
32e0: 2d 20 31 38 36 37 32 31 36 2e 32 35 29 20 2f 20  - 1867216.25) / 
32f0: 33 36 35 32 34 2e 32 35 29 3b 0d 0a 20 20 20 20  36524.25);..    
3300: 20 20 20 20 41 20 3d 20 5a 20 2b 20 31 20 2b 20      A = Z + 1 + 
3310: 41 20 2d 20 28 41 20 2f 20 34 29 3b 0d 0a 20 20  A - (A / 4);..  
3320: 20 20 20 20 20 20 42 20 3d 20 41 20 2b 20 31 35        B = A + 15
3330: 32 34 3b 0d 0a 20 20 20 20 20 20 20 20 43 20 3d  24;..        C =
3340: 20 28 69 6e 74 29 28 28 42 20 2d 20 31 32 32 2e   (int)((B - 122.
3350: 31 29 20 2f 20 33 36 35 2e 32 35 29 3b 0d 0a 20  1) / 365.25);.. 
3360: 20 20 20 20 20 20 20 44 20 3d 20 28 33 36 35 32         D = (3652
3370: 35 20 2a 20 43 29 20 2f 20 31 30 30 3b 0d 0a 20  5 * C) / 100;.. 
3380: 20 20 20 20 20 20 20 45 20 3d 20 28 69 6e 74 29         E = (int)
3390: 28 28 42 20 2d 20 44 29 20 2f 20 33 30 2e 36 30  ((B - D) / 30.60
33a0: 30 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 58 31  01);..        X1
33b0: 20 3d 20 28 69 6e 74 29 28 33 30 2e 36 30 30 31   = (int)(30.6001
33c0: 20 2a 20 45 29 3b 0d 0a 0d 0a 20 20 20 20 20 20   * E);....      
33d0: 20 20 69 6e 74 20 64 61 79 2c 20 6d 6f 6e 74 68    int day, month
33e0: 2c 20 79 65 61 72 3b 0d 0a 0d 0a 20 20 20 20 20  , year;....     
33f0: 20 20 20 64 61 79 20 3d 20 42 20 2d 20 44 20 2d     day = B - D -
3400: 20 58 31 3b 0d 0a 20 20 20 20 20 20 20 20 6d 6f   X1;..        mo
3410: 6e 74 68 20 3d 20 45 20 3c 20 31 34 20 3f 20 45  nth = E < 14 ? E
3420: 20 2d 20 31 20 3a 20 45 20 2d 20 31 33 3b 0d 0a   - 1 : E - 13;..
3430: 20 20 20 20 20 20 20 20 79 65 61 72 20 3d 20 6d          year = m
3440: 6f 6e 74 68 20 3e 20 32 20 3f 20 43 20 2d 20 34  onth > 2 ? C - 4
3450: 37 31 36 20 3a 20 43 20 2d 20 34 37 31 35 3b 0d  716 : C - 4715;.
3460: 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a  ...        try..
3470: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3480: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
3490: 77 20 44 61 74 65 54 69 6d 65 28 79 65 61 72 2c  w DateTime(year,
34a0: 20 6d 6f 6e 74 68 2c 20 64 61 79 29 3b 0d 0a 20   month, day);.. 
34b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
34c0: 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20    catch..       
34d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34e0: 69 66 20 28 62 61 64 56 61 6c 75 65 20 3d 3d 20  if (badValue == 
34f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
3500: 20 20 20 20 20 20 20 74 68 72 6f 77 3b 0d 0a 0d         throw;...
3510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
3520: 75 72 6e 20 28 44 61 74 65 54 69 6d 65 29 62 61  urn (DateTime)ba
3530: 64 56 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  dValue;..       
3540: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
3550: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35a0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
35b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
35c0: 72 74 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79  rts a Julian Day
35d0: 20 76 61 6c 75 65 20 74 6f 20 61 20 3c 73 65 65   value to a <see
35e0: 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22   cref="DateTime"
35f0: 20 2f 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68   />...    /// Th
3600: 69 73 20 6d 65 74 68 6f 64 20 77 61 73 20 74 72  is method was tr
3610: 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20 74 68  anslated from th
3620: 65 20 22 63 6f 6d 70 75 74 65 48 4d 53 22 20 66  e "computeHMS" f
3630: 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 0d 0a  unction in the..
3640: 20 20 20 20 2f 2f 2f 20 22 64 61 74 65 2e 63 22      /// "date.c"
3650: 20 66 69 6c 65 20 62 65 6c 6f 6e 67 69 6e 67 20   file belonging 
3660: 74 6f 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  to the SQLite co
3670: 72 65 20 6c 69 62 72 61 72 79 2e 0d 0a 20 20 20  re library...   
3680: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
3690: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
36a0: 6e 61 6d 65 3d 22 6a 64 22 3e 0d 0a 20 20 20 20  name="jd">..    
36b0: 2f 2f 2f 20 54 68 65 20 4a 75 6c 69 61 6e 20 44  /// The Julian D
36c0: 61 79 20 76 61 6c 75 65 20 74 6f 20 63 6f 6e 76  ay value to conv
36d0: 65 72 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ert...    /// </
36e0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
36f0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 62 61 64  <param name="bad
3700: 56 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f  Value">..    ///
3710: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22   The <see cref="
3720: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
3730: 75 65 20 74 6f 20 72 65 74 75 72 6e 20 69 6e 20  ue to return in 
3740: 74 68 65 20 65 76 65 6e 74 20 74 68 61 74 20 74  the event that t
3750: 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75 6c 69  he..    /// Juli
3760: 61 6e 20 44 61 79 20 76 61 6c 75 65 20 69 73 20  an Day value is 
3770: 6f 75 74 20 6f 66 20 74 68 65 20 73 75 70 70 6f  out of the suppo
3780: 72 74 65 64 20 72 61 6e 67 65 2e 20 20 49 66 20  rted range.  If 
3790: 74 68 69 73 20 76 61 6c 75 65 20 69 73 0d 0a 20  this value is.. 
37a0: 20 20 20 2f 2f 2f 20 6e 75 6c 6c 2c 20 61 6e 20     /// null, an 
37b0: 65 78 63 65 70 74 69 6f 6e 20 77 69 6c 6c 20 62  exception will b
37c0: 65 20 74 68 72 6f 77 6e 20 69 6e 73 74 65 61 64  e thrown instead
37d0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
37e0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65  am>..    /// <re
37f0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20  turns>..    /// 
3800: 41 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  A <see cref="Dat
3810: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 20  eTime" /> value 
3820: 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68  that contains th
3830: 65 20 68 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20  e hour, minute, 
3840: 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 63  and..    /// sec
3850: 6f 6e 64 2c 20 61 6e 64 20 6d 69 6c 6c 69 73 65  ond, and millise
3860: 63 6f 6e 64 20 76 61 6c 75 65 73 20 74 68 61 74  cond values that
3870: 20 61 72 65 20 63 6c 6f 73 65 73 74 20 74 6f 20   are closest to 
3880: 74 68 65 20 73 70 65 63 69 66 69 65 64 0d 0a 20  the specified.. 
3890: 20 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20 44 61     /// Julian Da
38a0: 79 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f  y value...    //
38b0: 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
38c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
38d0: 20 44 61 74 65 54 69 6d 65 20 63 6f 6d 70 75 74   DateTime comput
38e0: 65 48 4d 53 28 0d 0a 20 20 20 20 20 20 20 20 6c  eHMS(..        l
38f0: 6f 6e 67 20 6a 64 2c 0d 0a 20 20 20 20 20 20 20  ong jd,..       
3900: 20 44 61 74 65 54 69 6d 65 3f 20 62 61 64 56 61   DateTime? badVa
3910: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  lue..        )..
3920: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69      {..        i
3930: 66 20 28 21 69 73 56 61 6c 69 64 4a 64 28 6a 64  f (!isValidJd(jd
3940: 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
3950: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62             if (b
3960: 61 64 56 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29  adValue == null)
3970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
3980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3990: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
39a0: 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  entException(.. 
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39c0: 20 20 20 22 4e 6f 74 20 61 20 73 75 70 70 6f 72     "Not a suppor
39d0: 74 65 64 20 4a 75 6c 69 61 6e 20 44 61 79 20 76  ted Julian Day v
39e0: 61 6c 75 65 2e 22 29 3b 0d 0a 20 20 20 20 20 20  alue.");..      
39f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3a00: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 44         return (D
3a10: 61 74 65 54 69 6d 65 29 62 61 64 56 61 6c 75 65  ateTime)badValue
3a20: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
3a30: 20 20 20 20 20 20 20 20 69 6e 74 20 73 69 3b 0d          int si;.
3a40: 0a 0d 0a 20 20 20 20 20 20 20 20 73 69 20 3d 20  ...        si = 
3a50: 28 69 6e 74 29 28 28 6a 64 20 2b 20 34 33 32 30  (int)((jd + 4320
3a60: 30 30 30 30 29 20 25 20 38 36 34 30 30 30 30 30  0000) % 86400000
3a70: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65  );....        de
3a80: 63 69 6d 61 6c 20 73 64 3b 0d 0a 0d 0a 20 20 20  cimal sd;....   
3a90: 20 20 20 20 20 73 64 20 3d 20 73 69 20 2f 20 31       sd = si / 1
3aa0: 30 30 30 2e 30 4d 3b 0d 0a 20 20 20 20 20 20 20  000.0M;..       
3ab0: 20 73 69 20 3d 20 28 69 6e 74 29 73 64 3b 0d 0a   si = (int)sd;..
3ac0: 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 6d 69  ..        int mi
3ad0: 6c 6c 69 73 65 63 6f 6e 64 20 3d 20 28 69 6e 74  llisecond = (int
3ae0: 29 28 28 73 64 20 2d 20 73 69 29 20 2a 20 31 30  )((sd - si) * 10
3af0: 30 30 2e 30 4d 29 3b 0d 0a 0d 0a 20 20 20 20 20  00.0M);....     
3b00: 20 20 20 73 64 20 2d 3d 20 73 69 3b 0d 0a 0d 0a     sd -= si;....
3b10: 20 20 20 20 20 20 20 20 69 6e 74 20 68 6f 75 72          int hour
3b20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 68 6f 75  ;....        hou
3b30: 72 20 3d 20 73 69 20 2f 20 33 36 30 30 3b 0d 0a  r = si / 3600;..
3b40: 20 20 20 20 20 20 20 20 73 69 20 2d 3d 20 68 6f          si -= ho
3b50: 75 72 20 2a 20 33 36 30 30 3b 0d 0a 0d 0a 20 20  ur * 3600;....  
3b60: 20 20 20 20 20 20 69 6e 74 20 6d 69 6e 75 74 65        int minute
3b70: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 6d 69 6e  ;....        min
3b80: 75 74 65 20 3d 20 73 69 20 2f 20 36 30 3b 0d 0a  ute = si / 60;..
3b90: 20 20 20 20 20 20 20 20 73 64 20 2b 3d 20 73 69          sd += si
3ba0: 20 2d 20 6d 69 6e 75 74 65 20 2a 20 36 30 3b 0d   - minute * 60;.
3bb0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20 73  ...        int s
3bc0: 65 63 6f 6e 64 20 3d 20 28 69 6e 74 29 73 64 3b  econd = (int)sd;
3bd0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d  ....        try.
3be0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3bf0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
3c00: 20 6d 69 6e 56 61 6c 75 65 20 3d 20 44 61 74 65   minValue = Date
3c10: 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 3b 0d 0a  Time.MinValue;..
3c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
3c30: 74 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d  turn new DateTim
3c40: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
3c50: 20 20 20 20 6d 69 6e 56 61 6c 75 65 2e 59 65 61      minValue.Yea
3c60: 72 2c 20 6d 69 6e 56 61 6c 75 65 2e 4d 6f 6e 74  r, minValue.Mont
3c70: 68 2c 20 6d 69 6e 56 61 6c 75 65 2e 44 61 79 2c  h, minValue.Day,
3c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c90: 20 20 68 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20    hour, minute, 
3ca0: 73 65 63 6f 6e 64 2c 20 6d 69 6c 6c 69 73 65 63  second, millisec
3cb0: 6f 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ond);..        }
3cc0: 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
3cd0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
3ce0: 20 20 20 20 20 20 20 20 69 66 20 28 62 61 64 56          if (badV
3cf0: 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
3d10: 68 72 6f 77 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  hrow;....       
3d20: 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 61 74       return (Dat
3d30: 65 54 69 6d 65 29 62 61 64 56 61 6c 75 65 3b 0d  eTime)badValue;.
3d40: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
3d50: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
3d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3da0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
3db0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
3dc0: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 3c 73  // Converts a <s
3dd0: 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d  ee cref="DateTim
3de0: 65 22 20 2f 3e 20 74 6f 20 61 20 4a 75 6c 69 61  e" /> to a Julia
3df0: 6e 20 44 61 79 20 76 61 6c 75 65 2e 0d 0a 20 20  n Day value...  
3e00: 20 20 2f 2f 2f 20 54 68 69 73 20 6d 65 74 68 6f    /// This metho
3e10: 64 20 77 61 73 20 74 72 61 6e 73 6c 61 74 65 64  d was translated
3e20: 20 66 72 6f 6d 20 74 68 65 20 22 63 6f 6d 70 75   from the "compu
3e30: 74 65 4a 44 22 20 66 75 6e 63 74 69 6f 6e 20 69  teJD" function i
3e40: 6e 0d 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 22  n..    /// the "
3e50: 64 61 74 65 2e 63 22 20 66 69 6c 65 20 62 65 6c  date.c" file bel
3e60: 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 53 51  onging to the SQ
3e70: 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61 72  Lite core librar
3e80: 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 53 69 6e 63  y...    /// Sinc
3e90: 65 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 4a  e the range of J
3ea0: 75 6c 69 61 6e 20 44 61 79 20 76 61 6c 75 65 73  ulian Day values
3eb0: 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 74 68   supported by th
3ec0: 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20 20 20 2f  is method..    /
3ed0: 2f 2f 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20  // includes all 
3ee0: 70 6f 73 73 69 62 6c 65 20 28 76 61 6c 69 64 29  possible (valid)
3ef0: 20 76 61 6c 75 65 73 20 6f 66 20 61 20 3c 73 65   values of a <se
3f00: 65 20 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65  e cref="DateTime
3f10: 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 76 61  " />..    /// va
3f20: 6c 75 65 2c 20 69 74 20 73 68 6f 75 6c 64 20 62  lue, it should b
3f30: 65 20 65 78 74 72 65 6d 65 6c 79 20 64 69 66 66  e extremely diff
3f40: 69 63 75 6c 74 20 66 6f 72 20 74 68 69 73 20 6d  icult for this m
3f50: 65 74 68 6f 64 20 74 6f 0d 0a 20 20 20 20 2f 2f  ethod to..    //
3f60: 2f 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70  / raise an excep
3f70: 74 69 6f 6e 20 6f 72 20 72 65 74 75 72 6e 20 61  tion or return a
3f80: 6e 20 75 6e 64 65 66 69 6e 65 64 20 72 65 73 75  n undefined resu
3f90: 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  lt...    /// </s
3fa0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
3fb0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61   <param name="da
3fc0: 74 65 54 69 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f  teTime">..    //
3fd0: 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d  / The <see cref=
3fe0: 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61  "DateTime" /> va
3ff0: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 2e 20  lue to convert. 
4000: 20 54 68 69 73 20 76 61 6c 75 65 0d 0a 20 20 20   This value..   
4010: 20 2f 2f 2f 20 77 69 6c 6c 20 62 65 20 77 69 74   /// will be wit
4020: 68 69 6e 20 74 68 65 20 72 61 6e 67 65 20 6f 66  hin the range of
4030: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
4040: 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 22 20 2f  Time.MinValue" /
4050: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 28 30 30 3a 30  >..    /// (00:0
4060: 30 3a 30 30 2e 30 30 30 30 30 30 30 2c 20 4a 61  0:00.0000000, Ja
4070: 6e 75 61 72 79 20 31 2c 20 30 30 30 31 29 20 74  nuary 1, 0001) t
4080: 6f 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  o..    /// <see 
4090: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 2e 4d  cref="DateTime.M
40a0: 61 78 56 61 6c 75 65 22 20 2f 3e 20 28 32 33 3a  axValue" /> (23:
40b0: 35 39 3a 35 39 2e 39 39 39 39 39 39 39 2c 20 44  59:59.9999999, D
40c0: 65 63 65 6d 62 65 72 0d 0a 20 20 20 20 2f 2f 2f  ecember..    ///
40d0: 20 33 31 2c 20 39 39 39 39 29 2e 0d 0a 20 20 20   31, 9999)...   
40e0: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
40f0: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
4100: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
4110: 61 72 65 73 74 20 4a 75 6c 69 61 6e 20 44 61 79  arest Julian Day
4120: 20 76 61 6c 75 65 20 63 6f 72 72 65 73 70 6f 6e   value correspon
4130: 64 69 6e 67 20 74 6f 20 74 68 65 20 73 70 65 63  ding to the spec
4140: 69 66 69 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ified..    /// <
4150: 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
4160: 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
4170: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
4180: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73  >..    private s
4190: 74 61 74 69 63 20 6c 6f 6e 67 20 63 6f 6d 70 75  tatic long compu
41a0: 74 65 4a 44 28 0d 0a 20 20 20 20 20 20 20 20 44  teJD(..        D
41b0: 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65  ateTime dateTime
41c0: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
41d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 20   {..        int 
41e0: 59 2c 20 4d 2c 20 44 3b 0d 0a 0d 0a 20 20 20 20  Y, M, D;....    
41f0: 20 20 20 20 59 20 3d 20 64 61 74 65 54 69 6d 65      Y = dateTime
4200: 2e 59 65 61 72 3b 0d 0a 20 20 20 20 20 20 20 20  .Year;..        
4210: 4d 20 3d 20 64 61 74 65 54 69 6d 65 2e 4d 6f 6e  M = dateTime.Mon
4220: 74 68 3b 0d 0a 20 20 20 20 20 20 20 20 44 20 3d  th;..        D =
4230: 20 64 61 74 65 54 69 6d 65 2e 44 61 79 3b 0d 0a   dateTime.Day;..
4240: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 4d 20  ..        if (M 
4250: 3c 3d 20 32 29 0d 0a 20 20 20 20 20 20 20 20 7b  <= 2)..        {
4260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 59 2d  ..            Y-
4270: 2d 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  -;..            
4280: 4d 20 2b 3d 20 31 32 3b 0d 0a 20 20 20 20 20 20  M += 12;..      
4290: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69    }....        i
42a0: 6e 74 20 41 2c 20 42 2c 20 58 31 2c 20 58 32 3b  nt A, B, X1, X2;
42b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 20 3d 20  ....        A = 
42c0: 59 20 2f 20 31 30 30 3b 0d 0a 20 20 20 20 20 20  Y / 100;..      
42d0: 20 20 42 20 3d 20 32 20 2d 20 41 20 2b 20 28 41    B = 2 - A + (A
42e0: 20 2f 20 34 29 3b 0d 0a 20 20 20 20 20 20 20 20   / 4);..        
42f0: 58 31 20 3d 20 33 36 35 32 35 20 2a 20 28 59 20  X1 = 36525 * (Y 
4300: 2b 20 34 37 31 36 29 20 2f 20 31 30 30 3b 0d 0a  + 4716) / 100;..
4310: 20 20 20 20 20 20 20 20 58 32 20 3d 20 33 30 36          X2 = 306
4320: 30 30 31 20 2a 20 28 4d 20 2b 20 31 29 20 2f 20  001 * (M + 1) / 
4330: 31 30 30 30 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  10000;....      
4340: 20 20 6c 6f 6e 67 20 6a 64 3b 0d 0a 0d 0a 20 20    long jd;....  
4350: 20 20 20 20 20 20 6a 64 20 3d 20 28 6c 6f 6e 67        jd = (long
4360: 29 28 28 58 31 20 2b 20 58 32 20 2b 20 44 20 2b  )((X1 + X2 + D +
4370: 20 42 20 2d 20 31 35 32 34 2e 35 29 20 2a 20 38   B - 1524.5) * 8
4380: 36 34 30 30 30 30 30 29 3b 0d 0a 0d 0a 20 20 20  6400000);....   
4390: 20 20 20 20 20 6a 64 20 2b 3d 20 28 64 61 74 65       jd += (date
43a0: 54 69 6d 65 2e 48 6f 75 72 20 2a 20 33 36 30 30  Time.Hour * 3600
43b0: 30 30 30 29 20 2b 20 28 64 61 74 65 54 69 6d 65  000) + (dateTime
43c0: 2e 4d 69 6e 75 74 65 20 2a 20 36 30 30 30 30 29  .Minute * 60000)
43d0: 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
43e0: 28 64 61 74 65 54 69 6d 65 2e 53 65 63 6f 6e 64  (dateTime.Second
43f0: 20 2a 20 31 30 30 30 29 20 2b 20 64 61 74 65 54   * 1000) + dateT
4400: 69 6d 65 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64 3b  ime.Millisecond;
4410: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
4420: 72 6e 20 6a 64 3b 0d 0a 20 20 20 20 7d 0d 0a 20  rn jd;..    }.. 
4430: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
4440: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
4450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4490: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
44a0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
44b0: 6f 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67  onverts a string
44c0: 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65   into a DateTime
44d0: 2c 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65  , using the Date
44e0: 54 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65  TimeFormat, Date
44f0: 54 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f  TimeKind,..    /
4500: 2f 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46  // and DateTimeF
4510: 6f 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63  ormatString spec
4520: 69 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f  ified for the co
4530: 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74  nnection when it
4540: 20 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20   was opened...  
4550: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
4560: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72  ..    /// <remar
4570: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63  ks>..    /// Acc
4580: 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20  eptable ISO8601 
4590: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73  DateTime formats
45a0: 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c   are:..    /// <
45b0: 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65  list type="bulle
45c0: 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  t">..    /// <it
45d0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
45e0: 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69  THHmmssK</descri
45f0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4600: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4610: 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b  scription>THHmmK
4620: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4630: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4640: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4650: 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  n>HH:mm:ss.FFFFF
4660: 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  FFK</description
4670: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4680: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4690: 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f  tion>HH:mm:ssK</
46a0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
46b0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
46c0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
46d0: 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74  HH:mmK</descript
46e0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
46f0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4700: 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d  ription>yyyy-MM-
4710: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  dd HH:mm:ss.FFFF
4720: 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFK</descriptio
4730: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4740: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4750: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4760: 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63   HH:mm:ssK</desc
4770: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4780: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4790: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
47a0: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64  -MM-dd HH:mmK</d
47b0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
47c0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
47d0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
47e0: 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a  yyy-MM-ddTHH:mm:
47f0: 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73  ss.FFFFFFFK</des
4800: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
4810: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
4820: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
4830: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f  y-MM-ddTHH:mmK</
4840: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4850: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4860: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4870: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
4880: 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  :ssK</descriptio
4890: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
48a0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
48b0: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48  ption>yyyyMMddHH
48c0: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  mmssK</descripti
48d0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
48e0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
48f0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
4900: 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  HmmK</descriptio
4910: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4920: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4930: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48  ption>yyyyMMddTH
4940: 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64  HmmssFFFFFFFK</d
4950: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4960: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4970: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54  m><description>T
4980: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74  HHmmss</descript
4990: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
49a0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
49b0: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64  ription>THHmm</d
49c0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
49d0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
49e0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48  m><description>H
49f0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c  H:mm:ss.FFFFFFF<
4a00: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
4a10: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
4a20: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
4a30: 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72  >HH:mm:ss</descr
4a40: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
4a50: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
4a60: 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d  escription>HH:mm
4a70: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
4a80: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
4a90: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
4aa0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a  n>yyyy-MM-dd HH:
4ab0: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64  mm:ss.FFFFFFF</d
4ac0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65  escription></ite
4ad0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65  m>..    /// <ite
4ae0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79  m><description>y
4af0: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a  yyy-MM-dd HH:mm:
4b00: 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  ss</description>
4b10: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
4b20: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
4b30: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48  ion>yyyy-MM-dd H
4b40: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
4b50: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4b60: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4b70: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
4b80: 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46  THH:mm:ss.FFFFFF
4b90: 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  F</description><
4ba0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
4bb0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
4bc0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48  on>yyyy-MM-ddTHH
4bd0: 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :mm</description
4be0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
4bf0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
4c00: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54  tion>yyyy-MM-ddT
4c10: 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69  HH:mm:ss</descri
4c20: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4c30: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4c40: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4c50: 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69  ddHHmmss</descri
4c60: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20  ption></item>.. 
4c70: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65     /// <item><de
4c80: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d  scription>yyyyMM
4c90: 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74  ddHHmm</descript
4ca0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
4cb0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
4cc0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
4cd0: 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f  THHmmssFFFFFFF</
4ce0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4cf0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
4d00: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
4d10: 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63  yyyy-MM-dd</desc
4d20: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
4d30: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
4d40: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79  description>yyyy
4d50: 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f  MMdd</descriptio
4d60: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
4d70: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
4d80: 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f  ption>yy-MM-dd</
4d90: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
4da0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c  em>..    /// </l
4db0: 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66  ist>..    /// If
4dc0: 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e   the string cann
4dd0: 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f  ot be matched to
4de0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76   one of the abov
4df0: 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a  e formats -OR-..
4e00: 20 20 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65      /// the Date
4e10: 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67  TimeFormatString
4e20: 20 69 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76   if one was prov
4e30: 69 64 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69  ided, an excepti
4e40: 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f  on will..    ///
4e50: 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20   be thrown...   
4e60: 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d   /// </remarks>.
4e70: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
4e80: 6e 61 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e  name="dateText">
4e90: 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  The string conta
4ea0: 69 6e 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c  ining either a l
4eb0: 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62  ong integer numb
4ec0: 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65  er of 100-nanose
4ed0: 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65  cond units since
4ee0: 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d  ..    /// System
4ef0: 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c  .DateTime.MinVal
4f00: 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79  ue, a Julian day
4f10: 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65   double, an inte
4f20: 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65  ger number of se
4f30: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20  conds since the 
4f40: 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20  Unix epoch, a.. 
4f50: 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69     /// culture-i
4f60: 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61  ndependent forma
4f70: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69  tted date and ti
4f80: 6d 65 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72  me string, a for
4f90: 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20  matted date and 
4fa0: 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74  time string in t
4fb0: 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20  he current..    
4fc0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20  /// culture, or 
4fd0: 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61  an ISO8601-forma
4fe0: 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d  t string.</param
4ff0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
5000: 72 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76  rns>A DateTime v
5010: 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  alue</returns>..
5020: 20 20 20 20 70 75 62 6c 69 63 20 44 61 74 65 54      public DateT
5030: 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 73  ime ToDateTime(s
5040: 74 72 69 6e 67 20 64 61 74 65 54 65 78 74 29 0d  tring dateText).
5050: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65  .    {..      re
5060: 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28  turn ToDateTime(
5070: 64 61 74 65 54 65 78 74 2c 20 5f 64 61 74 65 74  dateText, _datet
5080: 69 6d 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65  imeFormat, _date
5090: 74 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74  timeKind, _datet
50a0: 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29  imeFormatString)
50b0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
50c0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
50d0: 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20     /// Converts 
50e0: 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20  a string into a 
50f0: 44 61 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20  DateTime, using 
5100: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 44 61  the specified Da
5110: 74 65 54 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20  teTimeFormat,.. 
5120: 20 20 20 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b     /// DateTimeK
5130: 69 6e 64 20 61 6e 64 20 44 61 74 65 54 69 6d 65  ind and DateTime
5140: 46 6f 72 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20  FormatString... 
5150: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
5160: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61  >..    /// <rema
5170: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63  rks>..    /// Ac
5180: 63 65 70 74 61 62 6c 65 20 49 53 4f 38 36 30 31  ceptable ISO8601
5190: 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74   DateTime format
51a0: 73 20 61 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20  s are:..    /// 
51b0: 3c 6c 69 73 74 20 74 79 70 65 3d 22 62 75 6c 6c  <list type="bull
51c0: 65 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  et">..    /// <i
51d0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
51e0: 3e 54 48 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72  >THHmmssK</descr
51f0: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
5200: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
5210: 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d  escription>THHmm
5220: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  K</description><
5230: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5240: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
5250: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46  on>HH:mm:ss.FFFF
5260: 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f  FFFK</descriptio
5270: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
5280: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5290: 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c  ption>HH:mm:ssK<
52a0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
52b0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
52c0: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
52d0: 3e 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70  >HH:mmK</descrip
52e0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
52f0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
5300: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d  cription>yyyy-MM
5310: 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46  -dd HH:mm:ss.FFF
5320: 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 70 74 69  FFFFK</descripti
5330: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5340: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5350: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5360: 64 20 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73  d HH:mm:ssK</des
5370: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
5380: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
5390: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
53a0: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f  y-MM-dd HH:mmK</
53b0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
53c0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
53d0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
53e0: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d  yyyy-MM-ddTHH:mm
53f0: 3a 73 73 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65  :ss.FFFFFFFK</de
5400: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d  scription></item
5410: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d  >..    /// <item
5420: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79  ><description>yy
5430: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c  yy-MM-ddTHH:mmK<
5440: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
5450: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5460: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
5470: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d  >yyyy-MM-ddTHH:m
5480: 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69  m:ssK</descripti
5490: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
54a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
54b0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48  iption>yyyyMMddH
54c0: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74  HmmssK</descript
54d0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20  ion></item>..   
54e0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
54f0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64  ription>yyyyMMdd
5500: 48 48 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69  HHmmK</descripti
5510: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5520: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5530: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54  iption>yyyyMMddT
5540: 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f  HHmmssFFFFFFFK</
5550: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
5560: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
5570: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
5580: 54 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70  THHmmss</descrip
5590: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
55a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
55b0: 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f  cription>THHmm</
55c0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
55d0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
55e0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
55f0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46  HH:mm:ss.FFFFFFF
5600: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
5610: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
5620: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f  item><descriptio
5630: 6e 3e 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63  n>HH:mm:ss</desc
5640: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d  ription></item>.
5650: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c  .    /// <item><
5660: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d  description>HH:m
5670: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c  m</description><
5680: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /item>..    /// 
5690: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69  <item><descripti
56a0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48  on>yyyy-MM-dd HH
56b0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f  :mm:ss.FFFFFFF</
56c0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74  description></it
56d0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74  em>..    /// <it
56e0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e  em><description>
56f0: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d  yyyy-MM-dd HH:mm
5700: 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  :ss</description
5710: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
5720: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
5730: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20  tion>yyyy-MM-dd 
5740: 48 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69  HH:mm</descripti
5750: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5760: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5770: 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64  iption>yyyy-MM-d
5780: 64 54 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  dTHH:mm:ss.FFFFF
5790: 46 46 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e  FF</description>
57a0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  </item>..    ///
57b0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74   <item><descript
57c0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48  ion>yyyy-MM-ddTH
57d0: 48 3a 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f  H:mm</descriptio
57e0: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f  n></item>..    /
57f0: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69  // <item><descri
5800: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64  ption>yyyy-MM-dd
5810: 54 48 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72  THH:mm:ss</descr
5820: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
5830: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
5840: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
5850: 4d 64 64 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72  MddHHmmss</descr
5860: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a  iption></item>..
5870: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64      /// <item><d
5880: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d  escription>yyyyM
5890: 4d 64 64 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70  MddHHmm</descrip
58a0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  tion></item>..  
58b0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73    /// <item><des
58c0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64  cription>yyyyMMd
58d0: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 3c  dTHHmmssFFFFFFF<
58e0: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
58f0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69  tem>..    /// <i
5900: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e  tem><description
5910: 3e 79 79 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73  >yyyy-MM-dd</des
5920: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e  cription></item>
5930: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e  ..    /// <item>
5940: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79  <description>yyy
5950: 79 4d 4d 64 64 3c 2f 64 65 73 63 72 69 70 74 69  yMMdd</descripti
5960: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20  on></item>..    
5970: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72  /// <item><descr
5980: 69 70 74 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c  iption>yy-MM-dd<
5990: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69  /description></i
59a0: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  tem>..    /// </
59b0: 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49  list>..    /// I
59c0: 66 20 74 68 65 20 73 74 72 69 6e 67 20 63 61 6e  f the string can
59d0: 6e 6f 74 20 62 65 20 6d 61 74 63 68 65 64 20 74  not be matched t
59e0: 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f  o one of the abo
59f0: 76 65 20 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d  ve formats -OR-.
5a00: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 44 61 74  .    /// the Dat
5a10: 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e  eTimeFormatStrin
5a20: 67 20 69 66 20 6f 6e 65 20 77 61 73 20 70 72 6f  g if one was pro
5a30: 76 69 64 65 64 2c 20 61 6e 20 65 78 63 65 70 74  vided, an except
5a40: 69 6f 6e 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f  ion will..    //
5a50: 2f 20 62 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20  / be thrown...  
5a60: 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
5a70: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
5a80: 20 6e 61 6d 65 3d 22 64 61 74 65 54 65 78 74 22   name="dateText"
5a90: 3e 54 68 65 20 73 74 72 69 6e 67 20 63 6f 6e 74  >The string cont
5aa0: 61 69 6e 69 6e 67 20 65 69 74 68 65 72 20 61 20  aining either a 
5ab0: 6c 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d  long integer num
5ac0: 62 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73  ber of 100-nanos
5ad0: 65 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63  econd units sinc
5ae0: 65 0d 0a 20 20 20 20 2f 2f 2f 20 53 79 73 74 65  e..    /// Syste
5af0: 6d 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61  m.DateTime.MinVa
5b00: 6c 75 65 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61  lue, a Julian da
5b10: 79 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74  y double, an int
5b20: 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73  eger number of s
5b30: 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65  econds since the
5b40: 20 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a   Unix epoch, a..
5b50: 20 20 20 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d      /// culture-
5b60: 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d  independent form
5b70: 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74  atted date and t
5b80: 69 6d 65 20 73 74 72 69 6e 67 2c 20 61 20 66 6f  ime string, a fo
5b90: 72 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64  rmatted date and
5ba0: 20 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20   time string in 
5bb0: 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
5bc0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72   /// culture, or
5bd0: 20 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d   an ISO8601-form
5be0: 61 74 20 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61  at string.</para
5bf0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
5c00: 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22  am name="format"
5c10: 3e 54 68 65 20 53 51 4c 69 74 65 44 61 74 65 46  >The SQLiteDateF
5c20: 6f 72 6d 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f  ormats to use.</
5c30: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
5c40: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e  <param name="kin
5c50: 64 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 4b  d">The DateTimeK
5c60: 69 6e 64 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72  ind to use.</par
5c70: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
5c80: 72 61 6d 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74  ram name="format
5c90: 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 65  String">The Date
5ca0: 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69  Time format stri
5cb0: 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61  ng to use.</para
5cc0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
5cd0: 75 72 6e 73 3e 41 20 44 61 74 65 54 69 6d 65 20  urns>A DateTime 
5ce0: 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d  value</returns>.
5cf0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
5d00: 69 63 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61  ic DateTime ToDa
5d10: 74 65 54 69 6d 65 28 0d 0a 20 20 20 20 20 20 20  teTime(..       
5d20: 20 73 74 72 69 6e 67 20 64 61 74 65 54 65 78 74   string dateText
5d30: 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
5d40: 65 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6f 72  eDateFormats for
5d50: 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 44 61  mat,..        Da
5d60: 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c  teTimeKind kind,
5d70: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
5d80: 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20   formatString.. 
5d90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
5da0: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20  .        switch 
5db0: 28 66 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20 20  (format)..      
5dc0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5dd0: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
5de0: 46 6f 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a  Formats.Ticks:..
5df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5e10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 69         return Ti
5e20: 63 6b 73 54 6f 44 61 74 65 54 69 6d 65 28 43 6f  cksToDateTime(Co
5e30: 6e 76 65 72 74 2e 54 6f 49 6e 74 36 34 28 0d 0a  nvert.ToInt64(..
5e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e50: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74          dateText
5e60: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e  , CultureInfo.In
5e70: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 2c  variantCulture),
5e80: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20   kind);..       
5e90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5ea0: 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c          case SQL
5eb0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 4a  iteDateFormats.J
5ec0: 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20 20 20 20  ulianDay:..     
5ed0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ef0: 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74 65 54    return ToDateT
5f00: 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 44 6f  ime(Convert.ToDo
5f10: 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  uble(..         
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5f30: 61 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65  ateText, Culture
5f40: 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
5f50: 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a  lture), kind);..
5f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  }..            c
5f80: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f  ase SQLiteDateFo
5f90: 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 3a  rmats.UnixEpoch:
5fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5fb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5fc0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5fd0: 55 6e 69 78 45 70 6f 63 68 54 6f 44 61 74 65 54  UnixEpochToDateT
5fe0: 69 6d 65 28 43 6f 6e 76 65 72 74 2e 54 6f 49 6e  ime(Convert.ToIn
5ff0: 74 36 34 28 0d 0a 20 20 20 20 20 20 20 20 20 20  t64(..          
6000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61                da
6010: 74 65 54 65 78 74 2c 20 43 75 6c 74 75 72 65 49  teText, CultureI
6020: 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c  nfo.InvariantCul
6030: 74 75 72 65 29 2c 20 6b 69 6e 64 29 3b 0d 0a 20  ture), kind);.. 
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
6050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
6060: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72  se SQLiteDateFor
6070: 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e 74 43 75  mats.InvariantCu
6080: 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20 20 20 20  lture:..        
6090: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
60a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
60b0: 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e 67 20  f (formatString 
60c0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
60d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60e0: 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d    return DateTim
60f0: 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61  e.SpecifyKind(Da
6100: 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 63  teTime.ParseExac
6110: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
6120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6130: 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d 61 74  dateText, format
6140: 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20  String,..       
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6160: 20 20 20 20 20 44 61 74 65 54 69 6d 65 46 6f 72       DateTimeFor
6170: 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e  matInfo.Invarian
6180: 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20  tInfo,..        
6190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61a0: 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65      kind == Date
61b0: 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a  TimeKind.Utc ?..
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61e0: 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41  DateTimeStyles.A
61f0: 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c  djustToUniversal
6200: 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   :..            
6210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6220: 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c      DateTimeStyl
6230: 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20  es.None),..     
6240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6250: 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20         kind);.. 
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6290: 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65   return DateTime
62a0: 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74  .SpecifyKind(Dat
62b0: 65 54 69 6d 65 2e 50 61 72 73 65 28 0d 0a 20 20  eTime.Parse(..  
62c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62d0: 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65            dateTe
62e0: 78 74 2c 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  xt, DateTimeForm
62f0: 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  atInfo.Invariant
6300: 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 20 20 20  Info,..         
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6320: 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54     kind == DateT
6330: 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f 0d 0a 20  imeKind.Utc ?.. 
6340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6360: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 41 64  ateTimeStyles.Ad
6370: 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 61 6c 20  justToUniversal 
6380: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
6390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63a0: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65     DateTimeStyle
63b0: 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 20 20 20  s.None),..      
63c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63d0: 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d 0a 20 20        kind);..  
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
63f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
6400: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d  e SQLiteDateForm
6410: 61 74 73 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  ats.CurrentCultu
6420: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re:..           
6430: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6440: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6450: 66 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20  formatString != 
6460: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
6470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6480: 65 74 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53  eturn DateTime.S
6490: 70 65 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54  pecifyKind(DateT
64a0: 69 6d 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d  ime.ParseExact(.
64b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
64c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74               dat
64d0: 65 54 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72  eText, formatStr
64e0: 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ing,..          
64f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6500: 20 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74    DateTimeFormat
6510: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f  Info.CurrentInfo
6520: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
6540: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b  ind == DateTimeK
6550: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20  ind.Utc ?..     
6560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6570: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6580: 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74  imeStyles.Adjust
6590: 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20  ToUniversal :.. 
65a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
65c0: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f  ateTimeStyles.No
65d0: 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ne),..          
65e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65f0: 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20    kind);..      
6600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
6610: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
6620: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
6630: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63  rn DateTime.Spec
6640: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65  ifyKind(DateTime
6650: 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20  .Parse(..       
6660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6670: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 44       dateText, D
6680: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
6690: 6f 2e 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a  o.CurrentInfo,..
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66b0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64              kind
66c0: 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64   == DateTimeKind
66d0: 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20  .Utc ?..        
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
6700: 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55  Styles.AdjustToU
6710: 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20  niversal :..    
6720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6730: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
6740: 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29  TimeStyles.None)
6750: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
6770: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
6780: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6790: 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 20 2f        default: /
67a0: 2a 20 49 53 4f 2d 38 36 30 31 20 2a 2f 0d 0a 20  * ISO-8601 */.. 
67b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
67c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
67d0: 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61 74        if (format
67e0: 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 0d  String != null).
67f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6800: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
6810: 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79  DateTime.Specify
6820: 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61  Kind(DateTime.Pa
6830: 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20  rseExact(..     
6840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6850: 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c         dateText,
6860: 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d 0a   formatString,..
6870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6880: 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65              Date
6890: 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49  TimeFormatInfo.I
68a0: 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20  nvariantInfo,.. 
68b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68c0: 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20             kind 
68d0: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
68e0: 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  Utc ?..         
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6900: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53         DateTimeS
6910: 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e  tyles.AdjustToUn
6920: 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20  iversal :..     
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54             DateT
6950: 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c  imeStyles.None),
6960: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
6980: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
6990: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
69a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
69c0: 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b  ateTime.SpecifyK
69d0: 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72  ind(DateTime.Par
69e0: 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20 20 20  seExact(..      
69f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a00: 20 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20        dateText, 
6a10: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 73  _datetimeFormats
6a20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
6a40: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66  ateTimeFormatInf
6a50: 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c  o.InvariantInfo,
6a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69                ki
6a80: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69  nd == DateTimeKi
6a90: 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20  nd.Utc ?..      
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ab0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69            DateTi
6ac0: 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54  meStyles.AdjustT
6ad0: 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20  oUniversal :..  
6ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61                Da
6b00: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e  teTimeStyles.Non
6b10: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
6b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b30: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20   kind);..       
6b40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
6b50: 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a      }..    }....
6b60: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
6b70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65  >..    /// Conve
6b80: 72 74 73 20 61 20 6a 75 6c 69 61 6e 64 61 79 20  rts a julianday 
6b90: 76 61 6c 75 65 20 69 6e 74 6f 20 61 20 44 61 74  value into a Dat
6ba0: 65 54 69 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c  eTime..    /// <
6bb0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
6bc0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
6bd0: 6a 75 6c 69 61 6e 44 61 79 22 3e 54 68 65 20 76  julianDay">The v
6be0: 61 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c  alue to convert<
6bf0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
6c00: 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e 4e 45 54   <returns>A .NET
6c10: 20 44 61 74 65 54 69 6d 65 3c 2f 72 65 74 75 72   DateTime</retur
6c20: 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ns>..    public 
6c30: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54  DateTime ToDateT
6c40: 69 6d 65 28 64 6f 75 62 6c 65 20 6a 75 6c 69 61  ime(double julia
6c50: 6e 44 61 79 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  nDay)..    {..  
6c60: 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44 61 74      return ToDat
6c70: 65 54 69 6d 65 28 6a 75 6c 69 61 6e 44 61 79 2c  eTime(julianDay,
6c80: 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29 3b   _datetimeKind);
6c90: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
6ca0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
6cb0: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61    /// Converts a
6cc0: 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c 75 65   julianday value
6cd0: 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65   into a DateTime
6ce0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  ..    /// </summ
6cf0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ary>..    /// <p
6d00: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61  aram name="julia
6d10: 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75 65 20  nDay">The value 
6d20: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61  to convert</para
6d30: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
6d40: 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54  am name="kind">T
6d50: 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  he DateTimeKind 
6d60: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d  to use.</param>.
6d70: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
6d80: 73 3e 41 20 2e 4e 45 54 20 44 61 74 65 54 69 6d  s>A .NET DateTim
6d90: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  e</returns>..   
6da0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 44   public static D
6db0: 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69  ateTime ToDateTi
6dc0: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 64 6f 75  me(..        dou
6dd0: 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79 2c 0d 0a  ble julianDay,..
6de0: 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65          DateTime
6df0: 4b 69 6e 64 20 6b 69 6e 64 0d 0a 20 20 20 20 20  Kind kind..     
6e00: 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
6e10: 20 20 20 20 20 6c 6f 6e 67 20 6a 64 20 3d 20 44       long jd = D
6e20: 6f 75 62 6c 65 54 6f 4a 64 28 6a 75 6c 69 61 6e  oubleToJd(julian
6e30: 44 61 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 44  Day);..        D
6e40: 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65  ateTime dateTime
6e50: 59 4d 44 20 3d 20 63 6f 6d 70 75 74 65 59 4d 44  YMD = computeYMD
6e60: 28 6a 64 2c 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20  (jd, null);..   
6e70: 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 64 61       DateTime da
6e80: 74 65 54 69 6d 65 48 4d 53 20 3d 20 63 6f 6d 70  teTimeHMS = comp
6e90: 75 74 65 48 4d 53 28 6a 64 2c 20 6e 75 6c 6c 29  uteHMS(jd, null)
6ea0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  ;....        ret
6eb0: 75 72 6e 20 6e 65 77 20 44 61 74 65 54 69 6d 65  urn new DateTime
6ec0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  (..            d
6ed0: 61 74 65 54 69 6d 65 59 4d 44 2e 59 65 61 72 2c  ateTimeYMD.Year,
6ee0: 20 64 61 74 65 54 69 6d 65 59 4d 44 2e 4d 6f 6e   dateTimeYMD.Mon
6ef0: 74 68 2c 20 64 61 74 65 54 69 6d 65 59 4d 44 2e  th, dateTimeYMD.
6f00: 44 61 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Day,..          
6f10: 20 20 64 61 74 65 54 69 6d 65 48 4d 53 2e 48 6f    dateTimeHMS.Ho
6f20: 75 72 2c 20 64 61 74 65 54 69 6d 65 48 4d 53 2e  ur, dateTimeHMS.
6f30: 4d 69 6e 75 74 65 2c 20 64 61 74 65 54 69 6d 65  Minute, dateTime
6f40: 48 4d 53 2e 53 65 63 6f 6e 64 2c 0d 0a 20 20 20  HMS.Second,..   
6f50: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 69 6d           dateTim
6f60: 65 48 4d 53 2e 4d 69 6c 6c 69 73 65 63 6f 6e 64  eHMS.Millisecond
6f70: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d  , kind);..    }.
6f80: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
6f90: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
6fa0: 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
6fb0: 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 73  fied number of s
6fc0: 65 63 6f 6e 64 73 20 66 72 6f 6d 20 74 68 65 20  econds from the 
6fd0: 55 6e 69 78 20 65 70 6f 63 68 20 69 6e 74 6f 20  Unix epoch into 
6fe0: 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20  a..    /// <see 
6ff0: 63 72 65 66 3d 22 44 61 74 65 54 69 6d 65 22 20  cref="DateTime" 
7000: 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f  /> value...    /
7010: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7020: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7030: 6d 65 3d 22 73 65 63 6f 6e 64 73 22 3e 0d 0a 20  me="seconds">.. 
7040: 20 20 20 2f 2f 2f 20 54 68 65 20 6e 75 6d 62 65     /// The numbe
7050: 72 20 6f 66 20 77 68 6f 6c 65 20 73 65 63 6f 6e  r of whole secon
7060: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69  ds since the Uni
7070: 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f 2f  x epoch...    //
7080: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
7090: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d  /// <param name=
70a0: 22 6b 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f 2f  "kind">..    ///
70b0: 20 45 69 74 68 65 72 20 55 74 63 20 6f 72 20 4c   Either Utc or L
70c0: 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20 20  ocal time...    
70d0: 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
70e0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
70f0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77  .    /// The new
7100: 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65   <see cref="Date
7110: 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d  Time" /> value..
7120: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72  .    /// </retur
7130: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
7140: 6c 20 73 74 61 74 69 63 20 44 61 74 65 54 69 6d  l static DateTim
7150: 65 20 55 6e 69 78 45 70 6f 63 68 54 6f 44 61 74  e UnixEpochToDat
7160: 65 54 69 6d 65 28 6c 6f 6e 67 20 73 65 63 6f 6e  eTime(long secon
7170: 64 73 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64  ds, DateTimeKind
7180: 20 6b 69 6e 64 29 0d 0a 20 20 20 20 7b 0d 0a 20   kind)..    {.. 
7190: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61         return Da
71a0: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69  teTime.SpecifyKi
71b0: 6e 64 28 55 6e 69 78 45 70 6f 63 68 2e 41 64 64  nd(UnixEpoch.Add
71c0: 53 65 63 6f 6e 64 73 28 73 65 63 6f 6e 64 73 29  Seconds(seconds)
71d0: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 7d 0d  , kind);..    }.
71e0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
71f0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f  ary>..    /// Co
7200: 6e 76 65 72 74 73 20 74 68 65 20 73 70 65 63 69  nverts the speci
7210: 66 69 65 64 20 6e 75 6d 62 65 72 20 6f 66 20 74  fied number of t
7220: 69 63 6b 73 20 73 69 6e 63 65 20 74 68 65 20 65  icks since the e
7230: 70 6f 63 68 20 69 6e 74 6f 20 61 0d 0a 20 20 20  poch into a..   
7240: 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22   /// <see cref="
7250: 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c  DateTime" /> val
7260: 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  ue...    /// </s
7270: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
7280: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 69   <param name="ti
7290: 63 6b 73 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  cks">..    /// T
72a0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 77 68 6f  he number of who
72b0: 6c 65 20 74 69 63 6b 73 20 73 69 6e 63 65 20 74  le ticks since t
72c0: 68 65 20 65 70 6f 63 68 2e 0d 0a 20 20 20 20 2f  he epoch...    /
72d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
72e0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
72f0: 3d 22 6b 69 6e 64 22 3e 0d 0a 20 20 20 20 2f 2f  ="kind">..    //
7300: 2f 20 45 69 74 68 65 72 20 55 74 63 20 6f 72 20  / Either Utc or 
7310: 4c 6f 63 61 6c 20 74 69 6d 65 2e 0d 0a 20 20 20  Local time...   
7320: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
7330: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7340: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65  ..    /// The ne
7350: 77 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74  w <see cref="Dat
7360: 65 54 69 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e  eTime" /> value.
7370: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
7380: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
7390: 61 6c 20 73 74 61 74 69 63 20 44 61 74 65 54 69  al static DateTi
73a0: 6d 65 20 54 69 63 6b 73 54 6f 44 61 74 65 54 69  me TicksToDateTi
73b0: 6d 65 28 6c 6f 6e 67 20 74 69 63 6b 73 2c 20 44  me(long ticks, D
73c0: 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e 64  ateTimeKind kind
73d0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
73e0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 61 74    return new Dat
73f0: 65 54 69 6d 65 28 74 69 63 6b 73 2c 20 6b 69 6e  eTime(ticks, kin
7400: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  d);..    }....  
7410: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
7420: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
7430: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72  s a DateTime str
7440: 75 63 74 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44  uct to a JulianD
7450: 61 79 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f  ay double..    /
7460: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
7470: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7480: 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44  me="value">The D
7490: 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65  ateTime to conve
74a0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  rt</param>..    
74b0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
74c0: 20 4a 75 6c 69 61 6e 44 61 79 20 76 61 6c 75 65   JulianDay value
74d0: 20 74 68 65 20 44 61 74 65 74 69 6d 65 20 72 65   the Datetime re
74e0: 70 72 65 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e  presents</return
74f0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  s>..    public s
7500: 74 61 74 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a  tatic double ToJ
7510: 75 6c 69 61 6e 44 61 79 28 44 61 74 65 54 69 6d  ulianDay(DateTim
7520: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d  e value)..    {.
7530: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
7540: 4a 64 54 6f 44 6f 75 62 6c 65 28 63 6f 6d 70 75  JdToDouble(compu
7550: 74 65 4a 44 28 76 61 6c 75 65 29 29 3b 0d 0a 20  teJD(value));.. 
7560: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
7570: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
7580: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 44 61  // Converts a Da
7590: 74 65 54 69 6d 65 20 73 74 72 75 63 74 20 74 6f  teTime struct to
75a0: 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65   the whole numbe
75b0: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e  r of seconds sin
75c0: 63 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  ce the..    /// 
75d0: 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20 20 20  Unix epoch...   
75e0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
75f0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20  .    /// <param 
7600: 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65  name="value">The
7610: 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e   DateTime to con
7620: 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  vert</param>..  
7630: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
7640: 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20  he whole number 
7650: 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 65  of seconds since
7660: 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 68 3c   the Unix epoch<
7670: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
7680: 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e  ublic static lon
7690: 67 20 54 6f 55 6e 69 78 45 70 6f 63 68 28 44 61  g ToUnixEpoch(Da
76a0: 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d 0a 20  teTime value).. 
76b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65     {..        re
76c0: 74 75 72 6e 20 28 76 61 6c 75 65 2e 53 75 62 74  turn (value.Subt
76d0: 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29 2e  ract(UnixEpoch).
76e0: 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e  Ticks / TimeSpan
76f0: 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64 29  .TicksPerSecond)
7700: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
7710: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
7720: 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74     /// Returns t
7730: 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d  he DateTime form
7740: 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65  at string to use
7750: 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 66 69   for the specifi
7760: 65 64 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  ed DateTimeKind.
7770: 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 3c 70 61  ..    /// If <pa
7780: 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66 6f 72  ramref name="for
7790: 6d 61 74 53 74 72 69 6e 67 22 20 2f 3e 20 69 73  matString" /> is
77a0: 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74 20 77 69   not null, it wi
77b0: 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 76  ll be returned v
77c0: 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20 2f 2f  erbatim...    //
77d0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
77e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
77f0: 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74  e="kind">The Dat
7800: 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65  eTimeKind to use
7810: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
7820: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
7830: 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e 54 68  formatString">Th
7840: 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61  e DateTime forma
7850: 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 2e  t string to use.
7860: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
7870: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
7880: 20 2f 2f 2f 20 54 68 65 20 44 61 74 65 54 69 6d   /// The DateTim
7890: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  e format string 
78a0: 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 73  to use for the s
78b0: 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 6d  pecified DateTim
78c0: 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  eKind...    /// 
78d0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
78e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
78f0: 74 72 69 6e 67 20 47 65 74 44 61 74 65 54 69 6d  tring GetDateTim
7900: 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 20  eKindFormat(..  
7910: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b 69        DateTimeKi
7920: 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 20  nd kind,..      
7930: 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 53    string formatS
7940: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 29  tring..        )
7950: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
7960: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e   if (formatStrin
7970: 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65 74 75 72  g != null) retur
7980: 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 3b 0d  n formatString;.
7990: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
79a0: 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d  (kind == DateTim
79b0: 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20 5f 64 61  eKind.Utc) ? _da
79c0: 74 65 74 69 6d 65 46 6f 72 6d 61 74 55 74 63 20  tetimeFormatUtc 
79d0: 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61  : _datetimeForma
79e0: 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d 0a  tLocal;..    }..
79f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
7a00: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e  ry>..    /// Con
7a10: 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69  verts a string i
7a20: 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20  nto a DateTime, 
7a30: 75 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69  using the DateTi
7a40: 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69  meFormat, DateTi
7a50: 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f  meKind,..    ///
7a60: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72   and DateTimeFor
7a70: 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66  matString specif
7a80: 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ied for the conn
7a90: 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77  ection when it w
7aa0: 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20  as opened...    
7ab0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
7ac0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7ad0: 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65 22 3e  ame="dateValue">
7ae0: 54 68 65 20 44 61 74 65 54 69 6d 65 20 76 61 6c  The DateTime val
7af0: 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70  ue to convert</p
7b00: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
7b10: 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72 20 61  returns>Either a
7b20: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
7b30: 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 65  ng the long inte
7b40: 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 30  ger number of 10
7b50: 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 69  0-nanosecond uni
7b60: 74 73 20 73 69 6e 63 65 20 53 79 73 74 65 6d 2e  ts since System.
7b70: 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75  DateTime.MinValu
7b80: 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a 75  e, a..    /// Ju
7b90: 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 2c  lian day double,
7ba0: 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d 62   an integer numb
7bb0: 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69  er of seconds si
7bc0: 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f  nce the Unix epo
7bd0: 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 6e  ch, a culture-in
7be0: 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74  dependent format
7bf0: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ted date and tim
7c00: 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 6e  e..    /// strin
7c10: 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20 64  g, a formatted d
7c20: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 72  ate and time str
7c30: 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 65  ing in the curre
7c40: 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61  nt culture, or a
7c50: 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74  n ISO8601-format
7c60: 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72 69 6e   date/time strin
7c70: 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  g.</returns>..  
7c80: 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
7c90: 54 6f 53 74 72 69 6e 67 28 44 61 74 65 54 69 6d  ToString(DateTim
7ca0: 65 20 64 61 74 65 56 61 6c 75 65 29 0d 0a 20 20  e dateValue)..  
7cb0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74    {..        ret
7cc0: 75 72 6e 20 54 6f 53 74 72 69 6e 67 28 64 61 74  urn ToString(dat
7cd0: 65 56 61 6c 75 65 2c 20 5f 64 61 74 65 74 69 6d  eValue, _datetim
7ce0: 65 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69  eFormat, _dateti
7cf0: 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d  meKind, _datetim
7d00: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d  eFormatString);.
7d10: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
7d20: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
7d30: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20   /// Converts a 
7d40: 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61  string into a Da
7d50: 74 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68  teTime, using th
7d60: 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74  e DateTimeFormat
7d70: 2c 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2c 0d  , DateTimeKind,.
7d80: 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 44 61 74  .    /// and Dat
7d90: 65 54 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e  eTimeFormatStrin
7da0: 67 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20  g specified for 
7db0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  the connection w
7dc0: 68 65 6e 20 69 74 20 77 61 73 20 6f 70 65 6e 65  hen it was opene
7dd0: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  d...    /// </su
7de0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
7df0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 64 61 74  <param name="dat
7e00: 65 56 61 6c 75 65 22 3e 54 68 65 20 44 61 74 65  eValue">The Date
7e10: 54 69 6d 65 20 76 61 6c 75 65 20 74 6f 20 63 6f  Time value to co
7e20: 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20  nvert</param>.. 
7e30: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
7e40: 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68 65 20  me="format">The 
7e50: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
7e60: 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d  s to use.</param
7e70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
7e80: 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e 54 68  m name="kind">Th
7e90: 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 74  e DateTimeKind t
7ea0: 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a  o use.</param>..
7eb0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
7ec0: 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 69 6e  ame="formatStrin
7ed0: 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20  g">The DateTime 
7ee0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f  format string to
7ef0: 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20   use.</param>.. 
7f00: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
7f10: 45 69 74 68 65 72 20 61 20 73 74 72 69 6e 67 20  Either a string 
7f20: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6c  containing the l
7f30: 6f 6e 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62  ong integer numb
7f40: 65 72 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65  er of 100-nanose
7f50: 63 6f 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65  cond units since
7f60: 20 53 79 73 74 65 6d 2e 44 61 74 65 54 69 6d 65   System.DateTime
7f70: 2e 4d 69 6e 56 61 6c 75 65 2c 20 61 0d 0a 20 20  .MinValue, a..  
7f80: 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 20 64 61 79    /// Julian day
7f90: 20 64 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65   double, an inte
7fa0: 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65  ger number of se
7fb0: 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20  conds since the 
7fc0: 55 6e 69 78 20 65 70 6f 63 68 2c 20 61 20 63 75  Unix epoch, a cu
7fd0: 6c 74 75 72 65 2d 69 6e 64 65 70 65 6e 64 65 6e  lture-independen
7fe0: 74 20 66 6f 72 6d 61 74 74 65 64 20 64 61 74 65  t formatted date
7ff0: 20 61 6e 64 20 74 69 6d 65 0d 0a 20 20 20 20 2f   and time..    /
8000: 2f 2f 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72  // string, a for
8010: 6d 61 74 74 65 64 20 64 61 74 65 20 61 6e 64 20  matted date and 
8020: 74 69 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74  time string in t
8030: 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75  he current cultu
8040: 72 65 2c 20 6f 72 20 61 6e 20 49 53 4f 38 36 30  re, or an ISO860
8050: 31 2d 66 6f 72 6d 61 74 20 64 61 74 65 2f 74 69  1-format date/ti
8060: 6d 65 20 73 74 72 69 6e 67 2e 3c 2f 72 65 74 75  me string.</retu
8070: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
8080: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
8090: 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  oString(..      
80a0: 20 20 44 61 74 65 54 69 6d 65 20 64 61 74 65 56    DateTime dateV
80b0: 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 53  alue,..        S
80c0: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
80d0: 20 66 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20   format,..      
80e0: 20 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b    DateTimeKind k
80f0: 69 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ind,..        st
8100: 72 69 6e 67 20 66 6f 72 6d 61 74 53 74 72 69 6e  ring formatStrin
8110: 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  g..        )..  
8120: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69    {..        swi
8130: 74 63 68 20 28 66 6f 72 6d 61 74 29 0d 0a 20 20  tch (format)..  
8140: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8150: 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 65       case SQLite
8160: 44 61 74 65 46 6f 72 6d 61 74 73 2e 54 69 63 6b  DateFormats.Tick
8170: 73 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s:..            
8180: 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 56      return dateV
8190: 61 6c 75 65 2e 54 69 63 6b 73 2e 54 6f 53 74 72  alue.Ticks.ToStr
81a0: 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  ing(CultureInfo.
81b0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
81c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
81d0: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46  case SQLiteDateF
81e0: 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 61 79  ormats.JulianDay
81f0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
8200: 20 20 20 72 65 74 75 72 6e 20 54 6f 4a 75 6c 69     return ToJuli
8210: 61 6e 44 61 79 28 64 61 74 65 56 61 6c 75 65 29  anDay(dateValue)
8220: 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
8230: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
8240: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20  ulture);..      
8250: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74        case SQLit
8260: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 55 6e 69  eDateFormats.Uni
8270: 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20 20 20 20  xEpoch:..       
8280: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
8290: 28 28 6c 6f 6e 67 29 28 64 61 74 65 56 61 6c 75  ((long)(dateValu
82a0: 65 2e 53 75 62 74 72 61 63 74 28 55 6e 69 78 45  e.Subtract(UnixE
82b0: 70 6f 63 68 29 2e 54 69 63 6b 73 20 2f 20 54 69  poch).Ticks / Ti
82c0: 6d 65 53 70 61 6e 2e 54 69 63 6b 73 50 65 72 53  meSpan.TicksPerS
82d0: 65 63 6f 6e 64 29 29 2e 54 6f 53 74 72 69 6e 67  econd)).ToString
82e0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
82f0: 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65   case SQLiteDate
8300: 46 6f 72 6d 61 74 73 2e 49 6e 76 61 72 69 61 6e  Formats.Invarian
8310: 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 20 20 20  tCulture:..     
8320: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
8330: 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 6f 53 74  n dateValue.ToSt
8340: 72 69 6e 67 28 28 66 6f 72 6d 61 74 53 74 72 69  ring((formatStri
8350: 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20  ng != null) ?.. 
8360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8370: 20 20 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 20     formatString 
8380: 3a 20 46 75 6c 6c 46 6f 72 6d 61 74 2c 20 43 75  : FullFormat, Cu
8390: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69  ltureInfo.Invari
83a0: 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20  antCulture);..  
83b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53            case S
83c0: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73  QLiteDateFormats
83d0: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a  .CurrentCulture:
83e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
83f0: 20 20 72 65 74 75 72 6e 20 64 61 74 65 56 61 6c    return dateVal
8400: 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 66 6f 72  ue.ToString((for
8410: 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c  matString != nul
8420: 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  l) ?..          
8430: 20 20 20 20 20 20 20 20 20 20 66 6f 72 6d 61 74            format
8440: 53 74 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72  String : FullFor
8450: 6d 61 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  mat, CultureInfo
8460: 2e 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 29  .CurrentCulture)
8470: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  ;..            d
8480: 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20  efault:..       
8490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
84a0: 28 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20  (dateValue.Kind 
84b0: 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e  == DateTimeKind.
84c0: 55 6e 73 70 65 63 69 66 69 65 64 29 20 3f 0d 0a  Unspecified) ?..
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 20 20 20 44 61 74 65 54 69 6d 65 2e 53 70 65      DateTime.Spe
84f0: 63 69 66 79 4b 69 6e 64 28 64 61 74 65 56 61 6c  cifyKind(dateVal
8500: 75 65 2c 20 6b 69 6e 64 29 2e 54 6f 53 74 72 69  ue, kind).ToStri
8510: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng(..           
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
8530: 44 61 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d  DateTimeKindForm
8540: 61 74 28 6b 69 6e 64 2c 20 66 6f 72 6d 61 74 53  at(kind, formatS
8550: 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20  tring),..       
8560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8570: 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f       CultureInfo
8580: 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
8590: 65 29 20 3a 20 64 61 74 65 56 61 6c 75 65 2e 54  e) : dateValue.T
85a0: 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  oString(..      
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b 69 6e    GetDateTimeKin
85d0: 64 46 6f 72 6d 61 74 28 64 61 74 65 56 61 6c 75  dFormat(dateValu
85e0: 65 2e 4b 69 6e 64 2c 20 66 6f 72 6d 61 74 53 74  e.Kind, formatSt
85f0: 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 20 20  ring),..        
8600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8610: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
8620: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65  InvariantCulture
8630: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
8640: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
8650: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
8660: 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66 75 6e 63  // Internal func
8670: 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65 72 74 20  tion to convert 
8680: 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  a UTF-8 encoded 
8690: 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20 73 70  IntPtr of the sp
86a0: 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 20 74  ecified length t
86b0: 6f 20 61 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20  o a DateTime... 
86c0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
86d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61  >..    /// <rema
86e0: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rks>..    /// Th
86f0: 69 73 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65  is is a convenie
8700: 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68  nce function, wh
8710: 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 20  ich first calls 
8720: 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 68  ToString() on th
8730: 65 20 49 6e 74 50 74 72 20 74 6f 20 63 6f 6e 76  e IntPtr to conv
8740: 65 72 74 20 69 74 20 74 6f 20 61 20 73 74 72 69  ert it to a stri
8750: 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c 73 0d 0a  ng, then calls..
8760: 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74 65 54 69      /// ToDateTi
8770: 6d 65 28 29 20 6f 6e 20 74 68 65 20 73 74 72 69  me() on the stri
8780: 6e 67 20 74 6f 20 72 65 74 75 72 6e 20 61 20 44  ng to return a D
8790: 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 2f 2f  ateTime...    //
87a0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  / </remarks>..  
87b0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d    /// <param nam
87c0: 65 3d 22 70 74 72 22 3e 41 20 70 6f 69 6e 74 65  e="ptr">A pointe
87d0: 72 20 74 6f 20 74 68 65 20 55 54 46 2d 38 20 65  r to the UTF-8 e
87e0: 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 3c 2f 70  ncoded string</p
87f0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
8800: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 6e 22  param name="len"
8810: 3e 54 68 65 20 6c 65 6e 67 74 68 20 69 6e 20 62  >The length in b
8820: 79 74 65 73 20 6f 66 20 74 68 65 20 73 74 72 69  ytes of the stri
8830: 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  ng</param>..    
8840: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65  /// <returns>The
8850: 20 70 61 72 73 65 64 20 44 61 74 65 54 69 6d 65   parsed DateTime
8860: 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e 73 3e   value</returns>
8870: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 44  ..    internal D
8880: 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 69  ateTime ToDateTi
8890: 6d 65 28 49 6e 74 50 74 72 20 70 74 72 2c 20 69  me(IntPtr ptr, i
88a0: 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d 0a  nt len)..    {..
88b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 6f 44        return ToD
88c0: 61 74 65 54 69 6d 65 28 54 6f 53 74 72 69 6e 67  ateTime(ToString
88d0: 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d 0a 20 20  (ptr, len));..  
88e0: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
88f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ion....    /// <
8900: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
8910: 2f 20 53 6d 61 72 74 20 6d 65 74 68 6f 64 20 6f  / Smart method o
8920: 66 20 73 70 6c 69 74 74 69 6e 67 20 61 20 73 74  f splitting a st
8930: 72 69 6e 67 2e 20 20 53 6b 69 70 73 20 71 75 6f  ring.  Skips quo
8940: 74 65 64 20 65 6c 65 6d 65 6e 74 73 2c 20 72 65  ted elements, re
8950: 6d 6f 76 65 73 20 74 68 65 20 71 75 6f 74 65 73  moves the quotes
8960: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
8970: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
8980: 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f  remarks>..    //
8990: 2f 20 54 68 69 73 20 73 70 6c 69 74 20 66 75 6e  / This split fun
89a0: 63 74 69 6f 6e 20 77 6f 72 6b 73 20 73 6f 6d 65  ction works some
89b0: 77 68 61 74 20 6c 69 6b 65 20 74 68 65 20 53 74  what like the St
89c0: 72 69 6e 67 2e 53 70 6c 69 74 28 29 20 66 75 6e  ring.Split() fun
89d0: 63 74 69 6f 6e 20 69 6e 20 74 68 61 74 20 69 74  ction in that it
89e0: 20 62 72 65 61 6b 73 20 61 70 61 72 74 20 61 20   breaks apart a 
89f0: 73 74 72 69 6e 67 20 69 6e 74 6f 0d 0a 20 20 20  string into..   
8a00: 20 2f 2f 2f 20 70 69 65 63 65 73 20 61 6e 64 20   /// pieces and 
8a10: 72 65 74 75 72 6e 73 20 74 68 65 20 70 69 65 63  returns the piec
8a20: 65 73 20 61 73 20 61 6e 20 61 72 72 61 79 2e 20  es as an array. 
8a30: 20 54 68 65 20 70 72 69 6d 61 72 79 20 64 69 66   The primary dif
8a40: 66 65 72 65 6e 63 65 73 20 61 72 65 3a 0d 0a 20  ferences are:.. 
8a50: 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 20 74 79 70     /// <list typ
8a60: 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a 20 20 20  e="bullet">..   
8a70: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63   /// <item><desc
8a80: 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 20 6f 6e 65  ription>Only one
8a90: 20 63 68 61 72 61 63 74 65 72 20 63 61 6e 20 62   character can b
8aa0: 65 20 70 72 6f 76 69 64 65 64 20 61 73 20 61 20  e provided as a 
8ab0: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63  separator charac
8ac0: 74 65 72 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e  ter</description
8ad0: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f  ></item>..    //
8ae0: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70  / <item><descrip
8af0: 74 69 6f 6e 3e 51 75 6f 74 65 64 20 74 65 78 74  tion>Quoted text
8b00: 20 69 6e 73 69 64 65 20 74 68 65 20 73 74 72 69   inside the stri
8b10: 6e 67 20 69 73 20 73 6b 69 70 70 65 64 20 6f 76  ng is skipped ov
8b20: 65 72 20 77 68 65 6e 20 73 65 61 72 63 68 69 6e  er when searchin
8b30: 67 20 66 6f 72 20 74 68 65 20 73 65 70 61 72 61  g for the separa
8b40: 74 6f 72 2c 20 61 6e 64 20 74 68 65 20 71 75 6f  tor, and the quo
8b50: 74 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  tes are removed.
8b60: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f  </description></
8b70: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  item>..    /// <
8b80: 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20  /list>..    /// 
8b90: 54 68 75 73 2c 20 69 66 20 73 70 6c 69 74 74 69  Thus, if splitti
8ba0: 6e 67 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ng the following
8bb0: 20 73 74 72 69 6e 67 20 6c 6f 6f 6b 69 6e 67 20   string looking 
8bc0: 66 6f 72 20 61 20 63 6f 6d 6d 61 3a 3c 62 72 2f  for a comma:<br/
8bd0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f 6e 65 2c 54  >..    /// One,T
8be0: 77 6f 2c 20 22 54 68 72 65 65 2c 20 46 6f 75 72  wo, "Three, Four
8bf0: 22 2c 20 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20  ", Five<br/>..  
8c00: 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20    /// <br/>..   
8c10: 20 2f 2f 2f 20 54 68 65 20 72 65 73 75 6c 74 69   /// The resulti
8c20: 6e 67 20 61 72 72 61 79 20 77 6f 75 6c 64 20 63  ng array would c
8c30: 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d 0a 20 20 20  ontain<br/>..   
8c40: 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 3c 62 72 2f   /// [0] One<br/
8c50: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b 31 5d 20 54  >..    /// [1] T
8c60: 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  wo<br/>..    ///
8c70: 20 5b 32 5d 20 54 68 72 65 65 2c 20 46 6f 75 72   [2] Three, Four
8c80: 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b  <br/>..    /// [
8c90: 33 5d 20 46 69 76 65 3c 62 72 2f 3e 0d 0a 20 20  3] Five<br/>..  
8ca0: 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d 0a 20 20 20    /// <br/>..   
8cb0: 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 61 74 20 74   /// Note that t
8cc0: 68 65 20 6c 65 61 64 69 6e 67 20 61 6e 64 20 74  he leading and t
8cd0: 72 61 69 6c 69 6e 67 20 73 70 61 63 65 73 20 77  railing spaces w
8ce0: 65 72 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  ere removed from
8cf0: 20 65 61 63 68 20 69 74 65 6d 20 64 75 72 69 6e   each item durin
8d00: 67 20 74 68 65 20 73 70 6c 69 74 2e 0d 0a 20 20  g the split...  
8d10: 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
8d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
8d30: 20 6e 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 53   name="source">S
8d40: 6f 75 72 63 65 20 73 74 72 69 6e 67 20 74 6f 20  ource string to 
8d50: 73 70 6c 69 74 20 61 70 61 72 74 3c 2f 70 61 72  split apart</par
8d60: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
8d70: 72 61 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72 61  ram name="separa
8d80: 74 6f 72 22 3e 53 65 70 61 72 61 74 6f 72 20 63  tor">Separator c
8d90: 68 61 72 61 63 74 65 72 3c 2f 70 61 72 61 6d 3e  haracter</param>
8da0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
8db0: 6e 73 3e 41 20 73 74 72 69 6e 67 20 61 72 72 61  ns>A string arra
8dc0: 79 20 6f 66 20 74 68 65 20 73 70 6c 69 74 20 75  y of the split u
8dd0: 70 20 65 6c 65 6d 65 6e 74 73 3c 2f 72 65 74 75  p elements</retu
8de0: 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63  rns>..    public
8df0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
8e00: 20 53 70 6c 69 74 28 73 74 72 69 6e 67 20 73 6f   Split(string so
8e10: 75 72 63 65 2c 20 63 68 61 72 20 73 65 70 61 72  urce, char separ
8e20: 61 74 6f 72 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ator)..    {..  
8e30: 20 20 20 20 63 68 61 72 5b 5d 20 74 6f 6b 73 20      char[] toks 
8e40: 3d 20 6e 65 77 20 63 68 61 72 5b 32 5d 20 7b 20  = new char[2] { 
8e50: 51 75 6f 74 65 43 68 61 72 2c 20 73 65 70 61 72  QuoteChar, separ
8e60: 61 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20 63  ator };..      c
8e70: 68 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65 77  har[] quot = new
8e80: 20 63 68 61 72 5b 31 5d 20 7b 20 51 75 6f 74 65   char[1] { Quote
8e90: 43 68 61 72 20 7d 3b 0d 0a 20 20 20 20 20 20 69  Char };..      i
8ea0: 6e 74 20 6e 20 3d 20 30 3b 0d 0a 20 20 20 20 20  nt n = 0;..     
8eb0: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c 73   List<string> ls
8ec0: 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 74 72 69   = new List<stri
8ed0: 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 20 73 74  ng>();..      st
8ee0: 72 69 6e 67 20 73 3b 0d 0a 0d 0a 20 20 20 20 20  ring s;....     
8ef0: 20 77 68 69 6c 65 20 28 73 6f 75 72 63 65 2e 4c   while (source.L
8f00: 65 6e 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20  ength > 0)..    
8f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e 20 3d    {..        n =
8f20: 20 73 6f 75 72 63 65 2e 49 6e 64 65 78 4f 66 41   source.IndexOfA
8f30: 6e 79 28 74 6f 6b 73 2c 20 6e 29 3b 0d 0a 20 20  ny(toks, n);..  
8f40: 20 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 2d        if (n == -
8f50: 31 29 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20  1) break;..     
8f60: 20 20 20 69 66 20 28 73 6f 75 72 63 65 5b 6e 5d     if (source[n]
8f70: 20 3d 3d 20 74 6f 6b 73 5b 30 5d 29 0d 0a 20 20   == toks[0])..  
8f80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8f90: 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 6f     //source = so
8fa0: 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 31  urce.Remove(n, 1
8fb0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 6e 20  );..          n 
8fc0: 3d 20 73 6f 75 72 63 65 2e 49 6e 64 65 78 4f 66  = source.IndexOf
8fd0: 41 6e 79 28 71 75 6f 74 2c 20 6e 20 2b 20 31 29  Any(quot, n + 1)
8fe0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20  ;..          if 
8ff0: 28 6e 20 3d 3d 20 2d 31 29 0d 0a 20 20 20 20 20  (n == -1)..     
9000: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9010: 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 22      //source = "
9020: 5c 22 22 20 2b 20 73 6f 75 72 63 65 3b 0d 0a 20  \"" + source;.. 
9030: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
9040: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ;..          }..
9050: 20 20 20 20 20 20 20 20 20 20 6e 2b 2b 3b 0d 0a            n++;..
9060: 20 20 20 20 20 20 20 20 20 20 2f 2f 73 6f 75 72            //sour
9070: 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 65 6d 6f  ce = source.Remo
9080: 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 20 20 20  ve(n, 1);..     
9090: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 65 6c     }..        el
90a0: 73 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  se..        {.. 
90b0: 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 6f 75           s = sou
90c0: 72 63 65 2e 53 75 62 73 74 72 69 6e 67 28 30 2c  rce.Substring(0,
90d0: 20 6e 29 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20   n).Trim();..   
90e0: 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e         if (s.Len
90f0: 67 74 68 20 3e 20 31 20 26 26 20 73 5b 30 5d 20  gth > 1 && s[0] 
9100: 3d 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20 73 5b  == quot[0] && s[
9110: 73 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20 3d 3d  s.Length - 1] ==
9120: 20 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20   s[0])..        
9130: 20 20 20 20 73 20 3d 20 73 2e 53 75 62 73 74 72      s = s.Substr
9140: 69 6e 67 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20  ing(1, s.Length 
9150: 2d 20 32 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  - 2);....       
9160: 20 20 20 73 6f 75 72 63 65 20 3d 20 73 6f 75 72     source = sour
9170: 63 65 2e 53 75 62 73 74 72 69 6e 67 28 6e 20 2b  ce.Substring(n +
9180: 20 31 29 2e 54 72 69 6d 28 29 3b 0d 0a 20 20 20   1).Trim();..   
9190: 20 20 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e         if (s.Len
91a0: 67 74 68 20 3e 20 30 29 20 6c 73 2e 41 64 64 28  gth > 0) ls.Add(
91b0: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 6e  s);..          n
91c0: 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 7d   = 0;..        }
91d0: 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20  ..      }..     
91e0: 20 69 66 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67   if (source.Leng
91f0: 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b  th > 0)..      {
9200: 0d 0a 20 20 20 20 20 20 20 20 73 20 3d 20 73 6f  ..        s = so
9210: 75 72 63 65 2e 54 72 69 6d 28 29 3b 0d 0a 20 20  urce.Trim();..  
9220: 20 20 20 20 20 20 69 66 20 28 73 2e 4c 65 6e 67        if (s.Leng
9230: 74 68 20 3e 20 31 20 26 26 20 73 5b 30 5d 20 3d  th > 1 && s[0] =
9240: 3d 20 71 75 6f 74 5b 30 5d 20 26 26 20 73 5b 73  = quot[0] && s[s
9250: 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 20 3d 3d 20  .Length - 1] == 
9260: 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 20  s[0])..         
9270: 20 73 20 3d 20 73 2e 53 75 62 73 74 72 69 6e 67   s = s.Substring
9280: 28 31 2c 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32  (1, s.Length - 2
9290: 29 3b 0d 0a 20 20 20 20 20 20 20 20 6c 73 2e 41  );..        ls.A
92a0: 64 64 28 73 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  dd(s);..      }.
92b0: 0a 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 5b  ...      string[
92c0: 5d 20 61 72 20 3d 20 6e 65 77 20 73 74 72 69 6e  ] ar = new strin
92d0: 67 5b 6c 73 2e 43 6f 75 6e 74 5d 3b 0d 0a 20 20  g[ls.Count];..  
92e0: 20 20 20 20 6c 73 2e 43 6f 70 79 54 6f 28 61 72      ls.CopyTo(ar
92f0: 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 72  , 0);....      r
9300: 65 74 75 72 6e 20 61 72 3b 0d 0a 20 20 20 20 7d  eturn ar;..    }
9310: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
9320: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53  mary>..    /// S
9330: 70 6c 69 74 73 20 74 68 65 20 73 70 65 63 69 66  plits the specif
9340: 69 65 64 20 73 74 72 69 6e 67 20 69 6e 74 6f 20  ied string into 
9350: 6d 75 6c 74 69 70 6c 65 20 73 74 72 69 6e 67 73  multiple strings
9360: 20 62 61 73 65 64 20 6f 6e 20 61 20 73 65 70 61   based on a sepa
9370: 72 61 74 6f 72 0d 0a 20 20 20 20 2f 2f 2f 20 61  rator..    /// a
9380: 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 72  nd returns the r
9390: 65 73 75 6c 74 20 61 73 20 61 6e 20 61 72 72 61  esult as an arra
93a0: 79 20 6f 66 20 73 74 72 69 6e 67 73 2e 0d 0a 20  y of strings... 
93b0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
93c0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
93d0: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
93e0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72  .    /// The str
93f0: 69 6e 67 20 74 6f 20 73 70 6c 69 74 20 69 6e 74  ing to split int
9400: 6f 20 70 69 65 63 65 73 20 62 61 73 65 64 20 6f  o pieces based o
9410: 6e 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 20  n the separator 
9420: 63 68 61 72 61 63 74 65 72 2e 20 20 49 66 0d 0a  character.  If..
9430: 20 20 20 20 2f 2f 2f 20 74 68 69 73 20 73 74 72      /// this str
9440: 69 6e 67 20 69 73 20 6e 75 6c 6c 2c 20 6e 75 6c  ing is null, nul
9450: 6c 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65  l will always be
9460: 20 72 65 74 75 72 6e 65 64 2e 20 20 49 66 20 74   returned.  If t
9470: 68 69 73 20 73 74 72 69 6e 67 20 69 73 0d 0a 20  his string is.. 
9480: 20 20 20 2f 2f 2f 20 65 6d 70 74 79 2c 20 61 6e     /// empty, an
9490: 20 61 72 72 61 79 20 6f 66 20 7a 65 72 6f 20 73   array of zero s
94a0: 74 72 69 6e 67 73 20 77 69 6c 6c 20 61 6c 77 61  trings will alwa
94b0: 79 73 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0d  ys be returned..
94c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
94d0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
94e0: 6d 20 6e 61 6d 65 3d 22 73 65 70 61 72 61 74 6f  m name="separato
94f0: 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  r">..    /// The
9500: 20 63 68 61 72 61 63 74 65 72 20 75 73 65 64 20   character used 
9510: 74 6f 20 64 69 76 69 64 65 20 74 68 65 20 6f 72  to divide the or
9520: 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 69 6e  iginal string in
9530: 74 6f 20 73 75 62 2d 73 74 72 69 6e 67 73 2e 0d  to sub-strings..
9540: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 63 68  .    /// This ch
9550: 61 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20 62  aracter cannot b
9560: 65 20 61 20 62 61 63 6b 73 6c 61 73 68 20 6f 72  e a backslash or
9570: 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 3b   a double-quote;
9580: 20 6f 74 68 65 72 77 69 73 65 2c 20 6e 6f 0d 0a   otherwise, no..
9590: 20 20 20 20 2f 2f 2f 20 77 6f 72 6b 20 77 69 6c      /// work wil
95a0: 6c 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61  l be performed a
95b0: 6e 64 20 6e 75 6c 6c 20 77 69 6c 6c 20 62 65 20  nd null will be 
95c0: 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f  returned...    /
95d0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
95e0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
95f0: 3d 22 6b 65 65 70 51 75 6f 74 65 22 3e 0d 0a 20  ="keepQuote">.. 
9600: 20 20 20 2f 2f 2f 20 49 66 20 74 68 69 73 20 70     /// If this p
9610: 61 72 61 6d 65 74 65 72 20 69 73 20 6e 6f 6e 2d  arameter is non-
9620: 7a 65 72 6f 2c 20 61 6c 6c 20 64 6f 75 62 6c 65  zero, all double
9630: 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72  -quote character
9640: 73 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 2f  s will be..    /
9650: 2f 2f 20 72 65 74 61 69 6e 65 64 20 69 6e 20 74  // retained in t
9660: 68 65 20 72 65 74 75 72 6e 65 64 20 6c 69 73 74  he returned list
9670: 20 6f 66 20 73 74 72 69 6e 67 73 3b 20 6f 74 68   of strings; oth
9680: 65 72 77 69 73 65 2c 20 74 68 65 79 20 77 69 6c  erwise, they wil
9690: 6c 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 72  l be..    /// dr
96a0: 6f 70 70 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20  opped...    /// 
96b0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
96c0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 65  / <param name="e
96d0: 72 72 6f 72 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  rror">..    /// 
96e0: 55 70 6f 6e 20 66 61 69 6c 75 72 65 2c 20 74 68  Upon failure, th
96f0: 69 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c  is parameter wil
9700: 6c 20 62 65 20 6d 6f 64 69 66 69 65 64 20 74 6f  l be modified to
9710: 20 63 6f 6e 74 61 69 6e 20 61 6e 20 61 70 70 72   contain an appr
9720: 6f 70 72 69 61 74 65 0d 0a 20 20 20 20 2f 2f 2f  opriate..    ///
9730: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0d   error message..
9740: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
9750: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
9760: 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  rns>..    /// Th
9770: 65 20 6e 65 77 20 61 72 72 61 79 20 6f 66 20 73  e new array of s
9780: 74 72 69 6e 67 73 20 6f 72 20 6e 75 6c 6c 20 69  trings or null i
9790: 66 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69  f the input stri
97a0: 6e 67 20 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 20  ng is null -OR- 
97b0: 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 65 70  the..    /// sep
97c0: 61 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72  arator character
97d0: 20 69 73 20 61 20 62 61 63 6b 73 6c 61 73 68 20   is a backslash 
97e0: 6f 72 20 61 20 64 6f 75 62 6c 65 2d 71 75 6f 74  or a double-quot
97f0: 65 20 2d 4f 52 2d 20 74 68 65 20 73 74 72 69 6e  e -OR- the strin
9800: 67 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f 6e 74 61  g..    /// conta
9810: 69 6e 73 20 61 6e 20 75 6e 62 61 6c 61 6e 63 65  ins an unbalance
9820: 64 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 64  d backslash or d
9830: 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72  ouble-quote char
9840: 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20  acter...    /// 
9850: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
9860: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
9870: 73 74 72 69 6e 67 5b 5d 20 4e 65 77 53 70 6c 69  string[] NewSpli
9880: 74 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  t(..        stri
9890: 6e 67 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20  ng value,..     
98a0: 20 20 20 63 68 61 72 20 73 65 70 61 72 61 74 6f     char separato
98b0: 72 2c 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  r,..        bool
98c0: 20 6b 65 65 70 51 75 6f 74 65 2c 0d 0a 20 20 20   keepQuote,..   
98d0: 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
98e0: 65 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 29  error..        )
98f0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
9900: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   //..        // 
9910: 4e 4f 54 45 3a 20 49 74 20 69 73 20 69 6c 6c 65  NOTE: It is ille
9920: 67 61 6c 20 66 6f 72 20 74 68 65 20 73 65 70 61  gal for the sepa
9930: 72 61 74 6f 72 20 63 68 61 72 61 63 74 65 72 20  rator character 
9940: 74 6f 20 62 65 20 65 69 74 68 65 72 20 61 0d 0a  to be either a..
9950: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
9960: 20 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20   backslash or a 
9970: 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 62 65 63  double-quote bec
9980: 61 75 73 65 20 62 6f 74 68 20 6f 66 20 74 68 6f  ause both of tho
9990: 73 65 20 63 68 61 72 61 63 74 65 72 73 0d 0a 20  se characters.. 
99a0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
99b0: 61 72 65 20 75 73 65 64 20 66 6f 72 20 65 73 63  are used for esc
99c0: 61 70 69 6e 67 20 6f 74 68 65 72 20 63 68 61 72  aping other char
99d0: 61 63 74 65 72 73 20 28 65 2e 67 2e 20 74 68 65  acters (e.g. the
99e0: 20 73 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20   separator..    
99f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
9a00: 72 61 63 74 65 72 29 2e 0d 0a 20 20 20 20 20 20  racter)...      
9a10: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 69 66    //..        if
9a20: 20 28 28 73 65 70 61 72 61 74 6f 72 20 3d 3d 20   ((separator == 
9a30: 45 73 63 61 70 65 43 68 61 72 29 20 7c 7c 20 28  EscapeChar) || (
9a40: 73 65 70 61 72 61 74 6f 72 20 3d 3d 20 51 75 6f  separator == Quo
9a50: 74 65 43 68 61 72 29 29 0d 0a 20 20 20 20 20 20  teChar))..      
9a60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9a70: 20 65 72 72 6f 72 20 3d 20 22 73 65 70 61 72 61   error = "separa
9a80: 74 6f 72 20 63 68 61 72 61 63 74 65 72 20 63 61  tor character ca
9a90: 6e 6e 6f 74 20 62 65 20 74 68 65 20 65 73 63 61  nnot be the esca
9aa0: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
9ab0: 61 63 74 65 72 73 22 3b 0d 0a 20 20 20 20 20 20  acters";..      
9ac0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
9ad0: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  l;..        }...
9ae0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c  .        if (val
9af0: 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
9b00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9b10: 20 20 20 20 65 72 72 6f 72 20 3d 20 22 73 74 72      error = "str
9b20: 69 6e 67 20 76 61 6c 75 65 20 74 6f 20 73 70 6c  ing value to spl
9b30: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c  it cannot be nul
9b40: 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l";..           
9b50: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20   return null;.. 
9b60: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9b70: 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d      int length =
9b80: 20 76 61 6c 75 65 2e 4c 65 6e 67 74 68 3b 0d 0a   value.Length;..
9b90: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6c 65  ..        if (le
9ba0: 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
9bb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
9bc0: 65 77 20 73 74 72 69 6e 67 5b 30 5d 3b 0d 0a 0d  ew string[0];...
9bd0: 0a 20 20 20 20 20 20 20 20 4c 69 73 74 3c 73 74  .        List<st
9be0: 72 69 6e 67 3e 20 6c 69 73 74 20 3d 20 6e 65 77  ring> list = new
9bf0: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b   List<string>();
9c00: 0d 0a 20 20 20 20 20 20 20 20 53 74 72 69 6e 67  ..        String
9c10: 42 75 69 6c 64 65 72 20 65 6c 65 6d 65 6e 74 20  Builder element 
9c20: 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c  = new StringBuil
9c30: 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  der();..        
9c40: 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b 0d 0a  int index = 0;..
9c50: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 65 73 63          bool esc
9c60: 61 70 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ape = false;..  
9c70: 20 20 20 20 20 20 62 6f 6f 6c 20 71 75 6f 74 65        bool quote
9c80: 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20   = false;....   
9c90: 20 20 20 20 20 77 68 69 6c 65 20 28 69 6e 64 65       while (inde
9ca0: 78 20 3c 20 6c 65 6e 67 74 68 29 0d 0a 20 20 20  x < length)..   
9cb0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9cc0: 20 20 20 20 63 68 61 72 20 63 68 61 72 61 63 74      char charact
9cd0: 65 72 20 3d 20 76 61 6c 75 65 5b 69 6e 64 65 78  er = value[index
9ce0: 2b 2b 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ++];....        
9cf0: 20 20 20 20 69 66 20 28 65 73 63 61 70 65 29 0d      if (escape).
9d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d20: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
9d30: 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 4f 6e 6c      // HACK: Onl
9d40: 79 20 63 6f 6e 73 69 64 65 72 20 74 68 65 20 65  y consider the e
9d50: 73 63 61 70 65 20 63 68 61 72 61 63 74 65 72 20  scape character 
9d60: 74 6f 20 62 65 20 61 6e 20 61 63 74 75 61 6c 0d  to be an actual.
9d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9d80: 20 2f 2f 20 20 20 20 20 20 20 22 65 73 63 61 70   //       "escap
9d90: 65 22 20 69 66 20 69 74 20 69 73 20 66 6f 6c 6c  e" if it is foll
9da0: 6f 77 65 64 20 62 79 20 61 20 72 65 73 65 72 76  owed by a reserv
9db0: 65 64 20 63 68 61 72 61 63 74 65 72 3b 0d 0a 20  ed character;.. 
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9dd0: 2f 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73  /       otherwis
9de0: 65 2c 20 65 6d 69 74 20 74 68 65 20 6f 72 69 67  e, emit the orig
9df0: 69 6e 61 6c 20 65 73 63 61 70 65 20 63 68 61 72  inal escape char
9e00: 61 63 74 65 72 20 61 6e 64 0d 0a 20 20 20 20 20  acter and..     
9e10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
9e20: 20 20 20 20 74 68 65 20 63 75 72 72 65 6e 74 20      the current 
9e30: 63 68 61 72 61 63 74 65 72 20 69 6e 20 61 6e 20  character in an 
9e40: 65 66 66 6f 72 74 20 74 6f 20 68 65 6c 70 20 70  effort to help p
9e50: 72 65 73 65 72 76 65 0d 0a 20 20 20 20 20 20 20  reserve..       
9e60: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
9e70: 20 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73    the original s
9e80: 74 72 69 6e 67 20 63 6f 6e 74 65 6e 74 2e 0d 0a  tring content...
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ea0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
9eb0: 20 20 20 20 69 66 20 28 28 63 68 61 72 61 63 74      if ((charact
9ec0: 65 72 20 21 3d 20 45 73 63 61 70 65 43 68 61 72  er != EscapeChar
9ed0: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
9ee0: 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72 61            (chara
9ef0: 63 74 65 72 20 21 3d 20 51 75 6f 74 65 43 68 61  cter != QuoteCha
9f00: 72 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  r) &&..         
9f10: 20 20 20 20 20 20 20 20 20 20 20 28 63 68 61 72             (char
9f20: 61 63 74 65 72 20 21 3d 20 73 65 70 61 72 61 74  acter != separat
9f30: 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  or))..          
9f40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65               ele
9f60: 6d 65 6e 74 2e 41 70 70 65 6e 64 28 45 73 63 61  ment.Append(Esca
9f70: 70 65 43 68 61 72 29 3b 0d 0a 20 20 20 20 20 20  peChar);..      
9f80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
9fa0: 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68  lement.Append(ch
9fb0: 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20  aracter);..     
9fc0: 20 20 20 20 20 20 20 20 20 20 20 65 73 63 61 70             escap
9fd0: 65 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e = false;..    
9fe0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9ff0: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
a000: 63 68 61 72 61 63 74 65 72 20 3d 3d 20 45 73 63  character == Esc
a010: 61 70 65 43 68 61 72 29 0d 0a 20 20 20 20 20 20  apeChar)..      
a020: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a030: 20 20 20 20 20 20 20 20 20 65 73 63 61 70 65 20           escape 
a040: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
a050: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a060: 20 20 20 20 65 6c 73 65 20 69 66 20 28 63 68 61      else if (cha
a070: 72 61 63 74 65 72 20 3d 3d 20 51 75 6f 74 65 43  racter == QuoteC
a080: 68 61 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20  har)..          
a090: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a0a0: 20 20 20 20 20 69 66 20 28 6b 65 65 70 51 75 6f       if (keepQuo
a0b0: 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te)..           
a0c0: 20 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74           element
a0d0: 2e 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65  .Append(characte
a0e0: 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
a0f0: 20 20 20 20 20 20 20 71 75 6f 74 65 20 3d 20 21         quote = !
a100: 71 75 6f 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  quote;..        
a110: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
a120: 20 20 20 65 6c 73 65 20 69 66 20 28 63 68 61 72     else if (char
a130: 61 63 74 65 72 20 3d 3d 20 73 65 70 61 72 61 74  acter == separat
a140: 6f 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or)..           
a150: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a160: 20 20 20 20 69 66 20 28 71 75 6f 74 65 29 0d 0a      if (quote)..
a170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a180: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a190: 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41         element.A
a1a0: 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29  ppend(character)
a1b0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
a1c0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
a1d0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
a1e0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a200: 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c 65 6d     list.Add(elem
a210: 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  ent.ToString());
a220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a230: 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 4c 65        element.Le
a240: 6e 67 74 68 20 3d 20 30 3b 0d 0a 20 20 20 20 20  ngth = 0;..     
a250: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
a260: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
a270: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
a280: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
a2a0: 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 68 61  ement.Append(cha
a2b0: 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 20 20  racter);..      
a2c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a2d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
a2e0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54  ..        // NOT
a2f0: 45 3a 20 41 6e 20 75 6e 62 61 6c 61 6e 63 65 64  E: An unbalanced
a300: 20 65 73 63 61 70 65 20 6f 72 20 71 75 6f 74 65   escape or quote
a310: 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 74 68   character in th
a320: 65 20 73 74 72 69 6e 67 20 69 73 0d 0a 20 20 20  e string is..   
a330: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
a340: 6e 73 69 64 65 72 65 64 20 74 6f 20 62 65 20 61  nsidered to be a
a350: 20 66 61 74 61 6c 20 65 72 72 6f 72 3b 20 74 68   fatal error; th
a360: 65 72 65 66 6f 72 65 2c 20 72 65 74 75 72 6e 20  erefore, return 
a370: 6e 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 2f  null...        /
a380: 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65  /..        if (e
a390: 73 63 61 70 65 20 7c 7c 20 71 75 6f 74 65 29 0d  scape || quote).
a3a0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
a3b0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
a3c0: 22 75 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61  "unbalanced esca
a3d0: 70 65 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72  pe or quote char
a3e0: 61 63 74 65 72 20 66 6f 75 6e 64 22 3b 0d 0a 20  acter found";.. 
a3f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
a400: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
a410: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66   }....        if
a420: 20 28 65 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68   (element.Length
a430: 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20   > 0)..         
a440: 20 20 20 6c 69 73 74 2e 41 64 64 28 65 6c 65 6d     list.Add(elem
a450: 65 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b  ent.ToString());
a460: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ....        retu
a470: 72 6e 20 6c 69 73 74 2e 54 6f 41 72 72 61 79 28  rn list.ToArray(
a480: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
a490: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
a4a0: 20 20 20 20 2f 2f 2f 20 51 75 65 72 69 65 73 20      /// Queries 
a4b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20  and returns the 
a4c0: 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
a4d0: 61 74 69 6f 6e 20 66 6f 72 20 61 6e 20 6f 62 6a  ation for an obj
a4e0: 65 63 74 2c 20 75 73 69 6e 67 20 74 68 65 0d 0a  ect, using the..
a4f0: 20 20 20 20 2f 2f 2f 20 73 70 65 63 69 66 69 65      /// specifie
a500: 64 20 28 6f 72 20 63 75 72 72 65 6e 74 29 20 66  d (or current) f
a510: 6f 72 6d 61 74 20 70 72 6f 76 69 64 65 72 2e 0d  ormat provider..
a520: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
a530: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
a540: 72 61 6d 20 6e 61 6d 65 3d 22 6f 62 6a 22 3e 0d  ram name="obj">.
a550: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62 6a  .    /// The obj
a560: 65 63 74 20 69 6e 73 74 61 6e 63 65 20 74 6f 20  ect instance to 
a570: 72 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e  return the strin
a580: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
a590: 20 66 6f 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c   for...    /// <
a5a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
a5b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 70 72   <param name="pr
a5c0: 6f 76 69 64 65 72 22 3e 0d 0a 20 20 20 20 2f 2f  ovider">..    //
a5d0: 2f 20 54 68 65 20 66 6f 72 6d 61 74 20 70 72 6f  / The format pro
a5e0: 76 69 64 65 72 20 74 6f 20 75 73 65 20 2d 4f 52  vider to use -OR
a5f0: 2d 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 63 75  - null if the cu
a600: 72 72 65 6e 74 20 66 6f 72 6d 61 74 20 70 72 6f  rrent format pro
a610: 76 69 64 65 72 20 66 6f 72 0d 0a 20 20 20 20 2f  vider for..    /
a620: 2f 2f 20 74 68 65 20 74 68 72 65 61 64 20 73 68  // the thread sh
a630: 6f 75 6c 64 20 62 65 20 75 73 65 64 20 69 6e 73  ould be used ins
a640: 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tead...    /// <
a650: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
a660: 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
a670: 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 72  /// The string r
a680: 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f  epresentation fo
a690: 72 20 74 68 65 20 6f 62 6a 65 63 74 20 69 6e 73  r the object ins
a6a0: 74 61 6e 63 65 20 2d 4f 52 2d 20 6e 75 6c 6c 20  tance -OR- null 
a6b0: 69 66 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  if the..    /// 
a6c0: 6f 62 6a 65 63 74 20 69 6e 73 74 61 6e 63 65 20  object instance 
a6d0: 69 73 20 61 6c 73 6f 20 6e 75 6c 6c 2e 0d 0a 20  is also null... 
a6e0: 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
a6f0: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74  >..    public st
a700: 61 74 69 63 20 73 74 72 69 6e 67 20 54 6f 53 74  atic string ToSt
a710: 72 69 6e 67 57 69 74 68 50 72 6f 76 69 64 65 72  ringWithProvider
a720: 28 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63  (..        objec
a730: 74 20 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20  t obj,..        
a740: 49 46 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20  IFormatProvider 
a750: 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 20 20  provider..      
a760: 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
a770: 20 20 20 20 69 66 20 28 6f 62 6a 20 3d 3d 20 6e      if (obj == n
a780: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
a790: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 20 2f    return null; /
a7a0: 2a 20 6e 75 6c 6c 20 2d 2d 3e 20 6e 75 6c 6c 20  * null --> null 
a7b0: 2a 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66  */....        if
a7c0: 20 28 6f 62 6a 20 69 73 20 73 74 72 69 6e 67 29   (obj is string)
a7d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
a7e0: 74 75 72 6e 20 28 73 74 72 69 6e 67 29 6f 62 6a  turn (string)obj
a7f0: 3b 20 2f 2a 20 69 64 65 6e 74 69 74 79 20 2a 2f  ; /* identity */
a800: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49 43 6f 6e  ....        ICon
a810: 76 65 72 74 69 62 6c 65 20 63 6f 6e 76 65 72 74  vertible convert
a820: 69 62 6c 65 20 3d 20 6f 62 6a 20 61 73 20 49 43  ible = obj as IC
a830: 6f 6e 76 65 72 74 69 62 6c 65 3b 0d 0a 0d 0a 20  onvertible;.... 
a840: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 76 65         if (conve
a850: 72 74 69 62 6c 65 20 21 3d 20 6e 75 6c 6c 29 0d  rtible != null).
a860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
a870: 75 72 6e 20 63 6f 6e 76 65 72 74 69 62 6c 65 2e  urn convertible.
a880: 54 6f 53 74 72 69 6e 67 28 70 72 6f 76 69 64 65  ToString(provide
a890: 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72  r);....        r
a8a0: 65 74 75 72 6e 20 6f 62 6a 2e 54 6f 53 74 72 69  eturn obj.ToStri
a8b0: 6e 67 28 29 3b 20 2f 2a 20 6e 6f 74 20 49 43 6f  ng(); /* not ICo
a8c0: 6e 76 65 72 74 69 62 6c 65 20 2a 2f 0d 0a 20 20  nvertible */..  
a8d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c    }....    /// <
a8e0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
a8f0: 2f 20 41 74 74 65 6d 70 74 73 20 74 6f 20 63 6f  / Attempts to co
a900: 6e 76 65 72 74 20 61 6e 20 61 72 62 69 74 72 61  nvert an arbitra
a910: 72 79 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65  ry object to the
a920: 20 42 6f 6f 6c 65 61 6e 20 64 61 74 61 20 74 79   Boolean data ty
a930: 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 75 6c  pe...    /// Nul
a940: 6c 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 73 20  l object values 
a950: 61 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  are converted to
a960: 20 66 61 6c 73 65 2e 20 20 54 68 72 6f 77 73 20   false.  Throws 
a970: 61 6e 20 65 78 63 65 70 74 69 6f 6e 0d 0a 20 20  an exception..  
a980: 20 20 2f 2f 2f 20 75 70 6f 6e 20 66 61 69 6c 75    /// upon failu
a990: 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
a9a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
a9b0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6f 62   <param name="ob
a9c0: 6a 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  j">..    /// The
a9d0: 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20 74 6f   object value to
a9e0: 20 63 6f 6e 76 65 72 74 2e 0d 0a 20 20 20 20 2f   convert...    /
a9f0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  // </param>..   
aa00: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
aa10: 3d 22 70 72 6f 76 69 64 65 72 22 3e 0d 0a 20 20  ="provider">..  
aa20: 20 20 2f 2f 2f 20 54 68 65 20 66 6f 72 6d 61 74    /// The format
aa30: 20 70 72 6f 76 69 64 65 72 20 74 6f 20 75 73 65   provider to use
aa40: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72  ...    /// </par
aa50: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  am>..    /// <pa
aa60: 72 61 6d 20 6e 61 6d 65 3d 22 76 69 61 46 72 61  ram name="viaFra
aa70: 6d 65 77 6f 72 6b 22 3e 0d 0a 20 20 20 20 2f 2f  mework">..    //
aa80: 2f 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 61  / If non-zero, a
aa90: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 77 69   string value wi
aaa0: 6c 6c 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20  ll be converted 
aab0: 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f  using the..    /
aac0: 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d 22 43 6f  // <see cref="Co
aad0: 6e 76 65 72 74 2e 54 6f 42 6f 6f 6c 65 61 6e 28  nvert.ToBoolean(
aae0: 4f 62 6a 65 63 74 2c 20 49 46 6f 72 6d 61 74 50  Object, IFormatP
aaf0: 72 6f 76 69 64 65 72 29 22 20 2f 3e 0d 0a 20 20  rovider)" />..  
ab00: 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 3b 20 6f 74    /// method; ot
ab10: 68 65 72 77 69 73 65 2c 20 74 68 65 20 3c 73 65  herwise, the <se
ab20: 65 20 63 72 65 66 3d 22 54 6f 42 6f 6f 6c 65 61  e cref="ToBoolea
ab30: 6e 28 53 74 72 69 6e 67 29 22 20 2f 3e 0d 0a 20  n(String)" />.. 
ab40: 20 20 20 2f 2f 2f 20 6d 65 74 68 6f 64 20 77 69     /// method wi
ab50: 6c 6c 20 62 65 20 75 73 65 64 2e 0d 0a 20 20 20  ll be used...   
ab60: 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
ab70: 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
ab80: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
ab90: 6e 76 65 72 74 65 64 20 62 6f 6f 6c 65 61 6e 20  nverted boolean 
aba0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  value...    /// 
abb0: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
abc0: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
abd0: 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 0d  bool ToBoolean(.
abe0: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
abf0: 6f 62 6a 2c 0d 0a 20 20 20 20 20 20 20 20 49 46  obj,..        IF
ac00: 6f 72 6d 61 74 50 72 6f 76 69 64 65 72 20 70 72  ormatProvider pr
ac10: 6f 76 69 64 65 72 2c 0d 0a 20 20 20 20 20 20 20  ovider,..       
ac20: 20 62 6f 6f 6c 20 76 69 61 46 72 61 6d 65 77 6f   bool viaFramewo
ac30: 72 6b 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20  rk..        ).. 
ac40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
ac50: 20 28 6f 62 6a 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (obj == null)..
ac60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ac70: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
ac80: 20 20 20 20 20 54 79 70 65 43 6f 64 65 20 74 79       TypeCode ty
ac90: 70 65 43 6f 64 65 20 3d 20 54 79 70 65 2e 47 65  peCode = Type.Ge
aca0: 74 54 79 70 65 43 6f 64 65 28 6f 62 6a 2e 47 65  tTypeCode(obj.Ge
acb0: 74 54 79 70 65 28 29 29 3b 0d 0a 0d 0a 20 20 20  tType());....   
acc0: 20 20 20 20 20 73 77 69 74 63 68 20 28 74 79 70       switch (typ
acd0: 65 43 6f 64 65 29 0d 0a 20 20 20 20 20 20 20 20  eCode)..        
ace0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
acf0: 61 73 65 20 54 79 70 65 43 6f 64 65 2e 45 6d 70  ase TypeCode.Emp
ad00: 74 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ty:..           
ad10: 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 44   case TypeCode.D
ad20: 42 4e 75 6c 6c 3a 0d 0a 20 20 20 20 20 20 20 20  BNull:..        
ad30: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
ad40: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
ad50: 20 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65     case TypeCode
ad60: 2e 42 6f 6f 6c 65 61 6e 3a 0d 0a 20 20 20 20 20  .Boolean:..     
ad70: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ad80: 6e 20 28 62 6f 6f 6c 29 6f 62 6a 3b 0d 0a 20 20  n (bool)obj;..  
ad90: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
ada0: 79 70 65 43 6f 64 65 2e 43 68 61 72 3a 0d 0a 20  ypeCode.Char:.. 
adb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
adc0: 65 74 75 72 6e 20 28 28 63 68 61 72 29 6f 62 6a  eturn ((char)obj
add0: 29 20 21 3d 20 28 63 68 61 72 29 30 20 3f 20 74  ) != (char)0 ? t
ade0: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
adf0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
ae00: 79 70 65 43 6f 64 65 2e 53 42 79 74 65 3a 0d 0a  ypeCode.SByte:..
ae10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae20: 72 65 74 75 72 6e 20 28 28 73 62 79 74 65 29 6f  return ((sbyte)o
ae30: 62 6a 29 20 21 3d 20 28 73 62 79 74 65 29 30 20  bj) != (sbyte)0 
ae40: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
ae50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
ae60: 65 20 54 79 70 65 43 6f 64 65 2e 42 79 74 65 3a  e TypeCode.Byte:
ae70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae80: 20 20 72 65 74 75 72 6e 20 28 28 62 79 74 65 29    return ((byte)
ae90: 6f 62 6a 29 20 21 3d 20 28 62 79 74 65 29 30 20  obj) != (byte)0 
aea0: 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d  ? true : false;.
aeb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73  .            cas
aec0: 65 20 54 79 70 65 43 6f 64 65 2e 49 6e 74 31 36  e TypeCode.Int16
aed0: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
aee0: 20 20 20 72 65 74 75 72 6e 20 28 28 73 68 6f 72     return ((shor
aef0: 74 29 6f 62 6a 29 20 21 3d 20 28 73 68 6f 72 74  t)obj) != (short
af00: 29 30 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73  )0 ? true : fals
af10: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
af20: 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e 55 49  case TypeCode.UI
af30: 6e 74 31 36 3a 0d 0a 20 20 20 20 20 20 20 20 20  nt16:..         
af40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
af50: 75 73 68 6f 72 74 29 6f 62 6a 29 20 21 3d 20 28  ushort)obj) != (
af60: 75 73 68 6f 72 74 29 30 20 3f 20 74 72 75 65 20  ushort)0 ? true 
af70: 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  : false;..      
af80: 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43        case TypeC
af90: 6f 64 65 2e 49 6e 74 33 32 3a 0d 0a 20 20 20 20  ode.Int32:..    
afa0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
afb0: 72 6e 20 28 28 69 6e 74 29 6f 62 6a 29 20 21 3d  rn ((int)obj) !=
afc0: 20 28 69 6e 74 29 30 20 3f 20 74 72 75 65 20 3a   (int)0 ? true :
afd0: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
afe0: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
aff0: 64 65 2e 55 49 6e 74 33 32 3a 0d 0a 20 20 20 20  de.UInt32:..    
b000: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b010: 72 6e 20 28 28 75 69 6e 74 29 6f 62 6a 29 20 21  rn ((uint)obj) !
b020: 3d 20 28 75 69 6e 74 29 30 20 3f 20 74 72 75 65  = (uint)0 ? true
b030: 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20   : false;..     
b040: 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70 65         case Type
b050: 43 6f 64 65 2e 49 6e 74 36 34 3a 0d 0a 20 20 20  Code.Int64:..   
b060: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b070: 75 72 6e 20 28 28 6c 6f 6e 67 29 6f 62 6a 29 20  urn ((long)obj) 
b080: 21 3d 20 28 6c 6f 6e 67 29 30 20 3f 20 74 72 75  != (long)0 ? tru
b090: 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  e : false;..    
b0a0: 20 20 20 20 20 20 20 20 63 61 73 65 20 54 79 70          case Typ
b0b0: 65 43 6f 64 65 2e 55 49 6e 74 36 34 3a 0d 0a 20  eCode.UInt64:.. 
b0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b0d0: 65 74 75 72 6e 20 28 28 75 6c 6f 6e 67 29 6f 62  eturn ((ulong)ob
b0e0: 6a 29 20 21 3d 20 28 75 6c 6f 6e 67 29 30 20 3f  j) != (ulong)0 ?
b0f0: 20 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a   true : false;..
b100: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
b110: 20 54 79 70 65 43 6f 64 65 2e 53 69 6e 67 6c 65   TypeCode.Single
b120: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  :..             
b130: 20 20 20 72 65 74 75 72 6e 20 28 28 66 6c 6f 61     return ((floa
b140: 74 29 6f 62 6a 29 20 21 3d 20 28 66 6c 6f 61 74  t)obj) != (float
b150: 29 30 2e 30 20 3f 20 74 72 75 65 20 3a 20 66 61  )0.0 ? true : fa
b160: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
b170: 20 20 63 61 73 65 20 54 79 70 65 43 6f 64 65 2e    case TypeCode.
b180: 44 6f 75 62 6c 65 3a 0d 0a 20 20 20 20 20 20 20  Double:..       
b190: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b1a0: 28 28 64 6f 75 62 6c 65 29 6f 62 6a 29 20 21 3d  ((double)obj) !=
b1b0: 20 28 64 6f 75 62 6c 65 29 30 2e 30 20 3f 20 74   (double)0.0 ? t
b1c0: 72 75 65 20 3a 20 66 61 6c 73 65 3b 0d 0a 20 20  rue : false;..  
b1d0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 54            case T
b1e0: 79 70 65 43 6f 64 65 2e 44 65 63 69 6d 61 6c 3a  ypeCode.Decimal:
b1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b200: 20 20 72 65 74 75 72 6e 20 28 28 64 65 63 69 6d    return ((decim
b210: 61 6c 29 6f 62 6a 29 20 21 3d 20 44 65 63 69 6d  al)obj) != Decim
b220: 61 6c 2e 5a 65 72 6f 20 3f 20 74 72 75 65 20 3a  al.Zero ? true :
b230: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
b240: 20 20 20 20 20 63 61 73 65 20 54 79 70 65 43 6f       case TypeCo
b250: 64 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20  de.String:..    
b260: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
b270: 72 6e 20 76 69 61 46 72 61 6d 65 77 6f 72 6b 20  rn viaFramework 
b280: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
b290: 20 20 20 20 20 20 20 43 6f 6e 76 65 72 74 2e 54         Convert.T
b2a0: 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 2c 20 70 72  oBoolean(obj, pr
b2b0: 6f 76 69 64 65 72 29 20 3a 0d 0a 20 20 20 20 20  ovider) :..     
b2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
b2d0: 6f 42 6f 6f 6c 65 61 6e 28 54 6f 53 74 72 69 6e  oBoolean(ToStrin
b2e0: 67 57 69 74 68 50 72 6f 76 69 64 65 72 28 6f 62  gWithProvider(ob
b2f0: 6a 2c 20 70 72 6f 76 69 64 65 72 29 29 3b 0d 0a  j, provider));..
b300: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61              defa
b310: 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  ult:..          
b320: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
b330: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
b340: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74  HelperMethods.St
b350: 72 69 6e 67 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ringFormat(..   
b360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b370: 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72   CultureInfo.Cur
b380: 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20  rentCulture,..  
b390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3a0: 20 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 76 65 72    "Cannot conver
b3b0: 74 20 74 79 70 65 20 7b 30 7d 20 74 6f 20 62 6f  t type {0} to bo
b3c0: 6f 6c 65 61 6e 22 2c 0d 0a 20 20 20 20 20 20 20  olean",..       
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
b3e0: 65 43 6f 64 65 29 29 3b 0d 0a 20 20 20 20 20 20  eCode));..      
b3f0: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20    }..    }....  
b400: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
b410: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74  .    /// Convert
b420: 20 61 20 76 61 6c 75 65 20 74 6f 20 74 72 75 65   a value to true
b430: 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 20 20 20 20   or false...    
b440: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
b450: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
b460: 61 6d 65 3d 22 73 6f 75 72 63 65 22 3e 41 20 73  ame="source">A s
b470: 74 72 69 6e 67 20 6f 72 20 6e 75 6d 62 65 72 20  tring or number 
b480: 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 75  representing tru
b490: 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 61  e or false</para
b4a0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  m>..    /// <ret
b4b0: 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d  urns></returns>.
b4c0: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74  .    public stat
b4d0: 69 63 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61  ic bool ToBoolea
b4e0: 6e 28 6f 62 6a 65 63 74 20 73 6f 75 72 63 65 29  n(object source)
b4f0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69  ..    {..      i
b500: 66 20 28 73 6f 75 72 63 65 20 69 73 20 62 6f 6f  f (source is boo
b510: 6c 29 20 72 65 74 75 72 6e 20 28 62 6f 6f 6c 29  l) return (bool)
b520: 73 6f 75 72 63 65 3b 0d 0a 0d 0a 20 20 20 20 20  source;....     
b530: 20 72 65 74 75 72 6e 20 54 6f 42 6f 6f 6c 65 61   return ToBoolea
b540: 6e 28 54 6f 53 74 72 69 6e 67 57 69 74 68 50 72  n(ToStringWithPr
b550: 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20 20 20  ovider(..       
b560: 20 20 20 73 6f 75 72 63 65 2c 20 43 75 6c 74 75     source, Cultu
b570: 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74  reInfo.Invariant
b580: 43 75 6c 74 75 72 65 29 29 3b 0d 0a 20 20 20 20  Culture));..    
b590: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20  ////....    /// 
b5f0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
b600: 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 69  // Converts an i
b610: 6e 74 65 67 65 72 20 74 6f 20 61 20 73 74 72 69  nteger to a stri
b620: 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65 20 72  ng that can be r
b630: 6f 75 6e 64 2d 74 72 69 70 70 65 64 20 75 73 69  ound-tripped usi
b640: 6e 67 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20  ng the..    /// 
b650: 69 6e 76 61 72 69 61 6e 74 20 63 75 6c 74 75 72  invariant cultur
b660: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
b670: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
b680: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 76 61 6c  <param name="val
b690: 75 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68  ue">..    /// Th
b6a0: 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20  e integer value 
b6b0: 74 6f 20 72 65 74 75 72 6e 20 74 68 65 20 73 74  to return the st
b6c0: 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74  ring representat
b6d0: 69 6f 6e 20 66 6f 72 2e 0d 0a 20 20 20 20 2f 2f  ion for...    //
b6e0: 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20  / </param>..    
b6f0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20  /// <returns>.. 
b700: 20 20 20 2f 2f 2f 20 54 68 65 20 73 74 72 69 6e     /// The strin
b710: 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
b720: 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65   of the specifie
b730: 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 2c  d integer value,
b740: 20 75 73 69 6e 67 20 74 68 65 0d 0a 20 20 20 20   using the..    
b750: 2f 2f 2f 20 69 6e 76 61 72 69 61 6e 74 20 63 75  /// invariant cu
b760: 6c 74 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lture...    /// 
b770: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20  </returns>..    
b780: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
b790: 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28  string ToString(
b7a0: 69 6e 74 20 76 61 6c 75 65 29 0d 0a 20 20 20 20  int value)..    
b7b0: 7b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  {..        retur
b7c0: 6e 20 76 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67  n value.ToString
b7d0: 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76  (CultureInfo.Inv
b7e0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d  ariantCulture);.
b7f0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
b800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
b850: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
b860: 20 20 20 20 2f 2f 2f 20 41 74 74 65 6d 70 74 73      /// Attempts
b870: 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 3c 73   to convert a <s
b880: 65 65 20 63 72 65 66 3d 22 53 74 72 69 6e 67 22  ee cref="String"
b890: 20 2f 3e 20 69 6e 74 6f 20 61 20 3c 73 65 65 20   /> into a <see 
b8a0: 63 72 65 66 3d 22 42 6f 6f 6c 65 61 6e 22 20 2f  cref="Boolean" /
b8b0: 3e 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  >...    /// </su
b8c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
b8d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75  <param name="sou
b8e0: 72 63 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  rce">..    /// T
b8f0: 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53 74  he <see cref="St
b900: 72 69 6e 67 22 20 2f 3e 20 74 6f 20 63 6f 6e 76  ring" /> to conv
b910: 65 72 74 2c 20 63 61 6e 6e 6f 74 20 62 65 20 6e  ert, cannot be n
b920: 75 6c 6c 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ull...    /// </
b930: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
b940: 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
b950: 2f 2f 20 54 68 65 20 63 6f 6e 76 65 72 74 65 64  // The converted
b960: 20 3c 73 65 65 20 63 72 65 66 3d 22 42 6f 6f 6c   <see cref="Bool
b970: 65 61 6e 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a  ean" /> value...
b980: 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e      /// </return
b990: 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d  s>..    /// <rem
b9a0: 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  arks>..    /// T
b9b0: 68 65 20 73 75 70 70 6f 72 74 65 64 20 73 74 72  he supported str
b9c0: 69 6e 67 73 20 61 72 65 20 22 79 65 73 22 2c 20  ings are "yes", 
b9d0: 22 6e 6f 22 2c 20 22 79 22 2c 20 22 6e 22 2c 20  "no", "y", "n", 
b9e0: 22 6f 6e 22 2c 20 22 6f 66 66 22 2c 20 22 30 22  "on", "off", "0"
b9f0: 2c 20 22 31 22 2c 0d 0a 20 20 20 20 2f 2f 2f 20  , "1",..    /// 
ba00: 61 73 20 77 65 6c 6c 20 61 73 20 61 6e 79 20 70  as well as any p
ba10: 72 65 66 69 78 20 6f 66 20 74 68 65 20 73 74 72  refix of the str
ba20: 69 6e 67 73 20 3c 73 65 65 20 63 72 65 66 3d 22  ings <see cref="
ba30: 42 6f 6f 6c 65 61 6e 2e 46 61 6c 73 65 53 74 72  Boolean.FalseStr
ba40: 69 6e 67 22 20 2f 3e 0d 0a 20 20 20 20 2f 2f 2f  ing" />..    ///
ba50: 20 61 6e 64 20 3c 73 65 65 20 63 72 65 66 3d 22   and <see cref="
ba60: 42 6f 6f 6c 65 61 6e 2e 54 72 75 65 53 74 72 69  Boolean.TrueStri
ba70: 6e 67 22 20 2f 3e 2e 20 20 41 6c 6c 20 73 74 72  ng" />.  All str
ba80: 69 6e 67 73 20 61 72 65 20 74 72 65 61 74 65 64  ings are treated
ba90: 20 69 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 63   in a..    /// c
baa0: 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65 20  ase-insensitive 
bab0: 6d 61 6e 6e 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f  manner...    ///
bac0: 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20   </remarks>..   
bad0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
bae0: 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 73 74  ool ToBoolean(st
baf0: 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a 20 20  ring source)..  
bb00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
bb10: 28 73 6f 75 72 63 65 20 3d 3d 20 6e 75 6c 6c 29  (source == null)
bb20: 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d   throw new Argum
bb30: 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e  entNullException
bb40: 28 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20  ("source");..   
bb50: 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
bb60: 43 6f 6d 70 61 72 65 28 73 6f 75 72 63 65 2c 20  Compare(source, 
bb70: 30 2c 20 62 6f 6f 6c 2e 54 72 75 65 53 74 72 69  0, bool.TrueStri
bb80: 6e 67 2c 20 30 2c 20 73 6f 75 72 63 65 2e 4c 65  ng, 0, source.Le
bb90: 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f 6d 70  ngth, StringComp
bba0: 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67  arison.OrdinalIg
bbb0: 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 29 20  noreCase) == 0) 
bbc0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
bbd0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53        else if (S
bbe0: 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 6f  tring.Compare(so
bbf0: 75 72 63 65 2c 20 30 2c 20 62 6f 6f 6c 2e 46 61  urce, 0, bool.Fa
bc00: 6c 73 65 53 74 72 69 6e 67 2c 20 30 2c 20 73 6f  lseString, 0, so
bc10: 75 72 63 65 2e 4c 65 6e 67 74 68 2c 20 53 74 72  urce.Length, Str
bc20: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
bc30: 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
bc40: 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 66 61   == 0) return fa
bc50: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
bc60: 73 77 69 74 63 68 20 28 73 6f 75 72 63 65 2e 54  switch (source.T
bc70: 6f 4c 6f 77 65 72 28 43 75 6c 74 75 72 65 49 6e  oLower(CultureIn
bc80: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
bc90: 75 72 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b  ure))..        {
bca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
bcb0: 73 65 20 22 79 22 3a 0d 0a 20 20 20 20 20 20 20  se "y":..       
bcc0: 20 20 20 20 20 63 61 73 65 20 22 79 65 73 22 3a       case "yes":
bcd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61  ..            ca
bce0: 73 65 20 22 6f 6e 22 3a 0d 0a 20 20 20 20 20 20  se "on":..      
bcf0: 20 20 20 20 20 20 63 61 73 65 20 22 31 22 3a 0d        case "1":.
bd00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd10: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
bd20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
bd30: 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  "n":..          
bd40: 20 20 63 61 73 65 20 22 6e 6f 22 3a 0d 0a 20 20    case "no":..  
bd50: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
bd60: 6f 66 66 22 3a 0d 0a 20 20 20 20 20 20 20 20 20  off":..         
bd70: 20 20 20 63 61 73 65 20 22 30 22 3a 0d 0a 20 20     case "0":..  
bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bd90: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
bda0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
bdb0: 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
bdc0: 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 22 73  mentException("s
bdd0: 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 7d 0d  ource");..    }.
bde0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 54  ...    #region T
bdf0: 79 70 65 20 43 6f 6e 76 65 72 73 69 6f 6e 73 0d  ype Conversions.
be00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
be10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76  y>..    /// Conv
be20: 65 72 74 73 20 61 20 53 51 4c 69 74 65 54 79 70  erts a SQLiteTyp
be30: 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79 70 65  e to a .NET Type
be40: 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f   object..    ///
be50: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
be60: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65   /// <param name
be70: 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74 65 54  ="t">The SQLiteT
be80: 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f  ype to convert</
be90: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
bea0: 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e 73  <returns>Returns
beb0: 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f 62 6a   a .NET Type obj
bec0: 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  ect</returns>.. 
bed0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74     internal stat
bee0: 69 63 20 54 79 70 65 20 53 51 4c 69 74 65 54 79  ic Type SQLiteTy
bef0: 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74 65 54  peToType(SQLiteT
bf00: 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d 0a 20  ype t)..    {.. 
bf10: 20 20 20 20 20 69 66 20 28 74 2e 54 79 70 65 20       if (t.Type 
bf20: 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74  == DbType.Object
bf30: 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  )..        retur
bf40: 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 70  n _affinitytotyp
bf50: 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e 69 74  e[(int)t.Affinit
bf60: 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d  y];..      else.
bf70: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
bf80: 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 44 62  SQLiteConvert.Db
bf90: 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54 79 70  TypeToType(t.Typ
bfa0: 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  e);..    }....  
bfb0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
bfc0: 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e 69 74   Type[] _affinit
bfd0: 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20 20 20  ytotype = {..   
bfe0: 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74     typeof(object
bff0: 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74 69 61  ),   // Uninitia
c000: 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20 20 20  lized (0)..     
c010: 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29 2c 20   typeof(Int64), 
c020: 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 29 0d     // Int64 (1).
c030: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 6f  .      typeof(Do
c040: 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75 62  uble),   // Doub
c050: 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 79  le (2)..      ty
c060: 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20  peof(string),   
c070: 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20 20 20  // Text (3)..   
c080: 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d     typeof(byte[]
c090: 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28 34 29  ),   // Blob (4)
c0a0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f  ..      typeof(o
c0b0: 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e 75 6c  bject),   // Nul
c0c0: 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 6e 75 6c  l (5)..      nul
c0d0: 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  l,             /
c0e0: 2f 20 55 6e 64 65 66 69 6e 65 64 20 28 36 29 0d  / Undefined (6).
c0f0: 0a 20 20 20 20 20 20 6e 75 6c 6c 2c 20 20 20 20  .      null,    
c100: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 6e 64 65           // Unde
c110: 66 69 6e 65 64 20 28 37 29 0d 0a 20 20 20 20 20  fined (7)..     
c120: 20 6e 75 6c 6c 2c 20 20 20 20 20 20 20 20 20 20   null,          
c130: 20 20 20 2f 2f 20 55 6e 64 65 66 69 6e 65 64 20     // Undefined 
c140: 28 38 29 0d 0a 20 20 20 20 20 20 6e 75 6c 6c 2c  (8)..      null,
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
c160: 55 6e 64 65 66 69 6e 65 64 20 28 39 29 0d 0a 20  Undefined (9).. 
c170: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
c180: 54 69 6d 65 29 2c 20 2f 2f 20 44 61 74 65 54 69  Time), // DateTi
c190: 6d 65 20 28 31 30 29 0d 0a 20 20 20 20 20 20 74  me (10)..      t
c1a0: 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 20 20 20  ypeof(object)   
c1b0: 20 2f 2f 20 4e 6f 6e 65 20 28 31 31 29 0d 0a 20   // None (11).. 
c1c0: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f     };....    ///
c1d0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
c1e0: 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20  /// For a given 
c1f0: 69 6e 74 72 69 6e 73 69 63 20 74 79 70 65 2c 20  intrinsic type, 
c200: 72 65 74 75 72 6e 20 61 20 44 62 54 79 70 65 0d  return a DbType.
c210: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
c220: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61  ry>..    /// <pa
c230: 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54  ram name="typ">T
c240: 68 65 20 6e 61 74 69 76 65 20 74 79 70 65 20 74  he native type t
c250: 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d  o convert</param
c260: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
c270: 72 6e 73 3e 54 68 65 20 63 6f 72 72 65 73 70 6f  rns>The correspo
c280: 6e 64 69 6e 67 20 28 63 6c 6f 73 65 73 74 20 6d  nding (closest m
c290: 61 74 63 68 29 20 44 62 54 79 70 65 3c 2f 72 65  atch) DbType</re
c2a0: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65  turns>..    inte
c2b0: 72 6e 61 6c 20 73 74 61 74 69 63 20 44 62 54 79  rnal static DbTy
c2c0: 70 65 20 54 79 70 65 54 6f 44 62 54 79 70 65 28  pe TypeToDbType(
c2d0: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b  Type typ)..    {
c2e0: 0d 0a 20 20 20 20 20 20 54 79 70 65 43 6f 64 65  ..      TypeCode
c2f0: 20 74 63 20 3d 20 54 79 70 65 2e 47 65 74 54 79   tc = Type.GetTy
c300: 70 65 43 6f 64 65 28 74 79 70 29 3b 0d 0a 20 20  peCode(typ);..  
c310: 20 20 20 20 69 66 20 28 74 63 20 3d 3d 20 54 79      if (tc == Ty
c320: 70 65 43 6f 64 65 2e 4f 62 6a 65 63 74 29 0d 0a  peCode.Object)..
c330: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
c340: 20 69 66 20 28 74 79 70 20 3d 3d 20 74 79 70 65   if (typ == type
c350: 6f 66 28 62 79 74 65 5b 5d 29 29 20 72 65 74 75  of(byte[])) retu
c360: 72 6e 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  rn DbType.Binary
c370: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74  ;..        if (t
c380: 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 47 75 69  yp == typeof(Gui
c390: 64 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 70  d)) return DbTyp
c3a0: 65 2e 47 75 69 64 3b 0d 0a 20 20 20 20 20 20 20  e.Guid;..       
c3b0: 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 2e 53   return DbType.S
c3c0: 74 72 69 6e 67 3b 0d 0a 20 20 20 20 20 20 7d 0d  tring;..      }.
c3d0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74  .      return _t
c3e0: 79 70 65 74 6f 64 62 74 79 70 65 5b 28 69 6e 74  ypetodbtype[(int
c3f0: 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  )tc];..    }....
c400: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
c410: 69 63 20 44 62 54 79 70 65 5b 5d 20 5f 74 79 70  ic DbType[] _typ
c420: 65 74 6f 64 62 74 79 70 65 20 3d 20 7b 0d 0a 20  etodbtype = {.. 
c430: 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a 65       DbType.Obje
c440: 63 74 2c 20 20 20 2f 2f 20 45 6d 70 74 79 20 28  ct,   // Empty (
c450: 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  0)..      DbType
c460: 2e 42 69 6e 61 72 79 2c 20 20 20 2f 2f 20 4f 62  .Binary,   // Ob
c470: 6a 65 63 74 20 28 31 29 0d 0a 20 20 20 20 20 20  ject (1)..      
c480: 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20  DbType.Object,  
c490: 20 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a   // DBNull (2)..
c4a0: 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 6f 6f        DbType.Boo
c4b0: 6c 65 61 6e 2c 20 20 2f 2f 20 42 6f 6f 6c 65 61  lean,  // Boolea
c4c0: 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 44 62 54  n (3)..      DbT
c4d0: 79 70 65 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f  ype.SByte,    //
c4e0: 20 43 68 61 72 20 28 34 29 0d 0a 20 20 20 20 20   Char (4)..     
c4f0: 20 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 20   DbType.SByte,  
c500: 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a    // SByte (5)..
c510: 20 20 20 20 20 20 44 62 54 79 70 65 2e 42 79 74        DbType.Byt
c520: 65 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28  e,     // Byte (
c530: 36 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  6)..      DbType
c540: 2e 49 6e 74 31 36 2c 20 20 20 20 2f 2f 20 49 6e  .Int16,    // In
c550: 74 31 36 20 28 37 29 0d 0a 20 20 20 20 20 20 44  t16 (7)..      D
c560: 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 20 20  bType.UInt16,   
c570: 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20  // UInt16 (8).. 
c580: 20 20 20 20 20 44 62 54 79 70 65 2e 49 6e 74 33       DbType.Int3
c590: 32 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28  2,    // Int32 (
c5a0: 39 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65  9)..      DbType
c5b0: 2e 55 49 6e 74 33 32 2c 20 20 20 2f 2f 20 55 49  .UInt32,   // UI
c5c0: 6e 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20  nt32 (10)..     
c5d0: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 20   DbType.Int64,  
c5e0: 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 29 0d    // Int64 (11).
c5f0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55 49  .      DbType.UI
c600: 6e 74 36 34 2c 20 20 20 2f 2f 20 55 49 6e 74 36  nt64,   // UInt6
c610: 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44 62  4 (12)..      Db
c620: 54 79 70 65 2e 53 69 6e 67 6c 65 2c 20 20 20 2f  Type.Single,   /
c630: 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20  / Single (13).. 
c640: 20 20 20 20 20 44 62 54 79 70 65 2e 44 6f 75 62       DbType.Doub
c650: 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20  le,   // Double 
c660: 28 31 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79  (14)..      DbTy
c670: 70 65 2e 44 65 63 69 6d 61 6c 2c 20 20 2f 2f 20  pe.Decimal,  // 
c680: 44 65 63 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20  Decimal (15)..  
c690: 20 20 20 20 44 62 54 79 70 65 2e 44 61 74 65 54      DbType.DateT
c6a0: 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  ime, // DateTime
c6b0: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 62 54   (16)..      DbT
c6c0: 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f 2f  ype.Object,   //
c6d0: 20 3f 3f 20 28 31 37 29 0d 0a 20 20 20 20 20 20   ?? (17)..      
c6e0: 44 62 54 79 70 65 2e 53 74 72 69 6e 67 20 20 20  DbType.String   
c6f0: 20 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d   // String (18).
c700: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
c710: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
c720: 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 20 74 68    /// Returns th
c730: 65 20 43 6f 6c 75 6d 6e 53 69 7a 65 20 66 6f 72  e ColumnSize for
c740: 20 74 68 65 20 67 69 76 65 6e 20 44 62 54 79 70   the given DbTyp
c750: 65 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  e..    /// </sum
c760: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
c770: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 22  param name="typ"
c780: 3e 54 68 65 20 44 62 54 79 70 65 20 74 6f 20 67  >The DbType to g
c790: 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 3c 2f  et the size of</
c7a0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
c7b0: 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72  <returns></retur
c7c0: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
c7d0: 6c 20 73 74 61 74 69 63 20 69 6e 74 20 44 62 54  l static int DbT
c7e0: 79 70 65 54 6f 43 6f 6c 75 6d 6e 53 69 7a 65 28  ypeToColumnSize(
c7f0: 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  DbType typ)..   
c800: 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   {..      return
c810: 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75 6d 6e   _dbtypetocolumn
c820: 73 69 7a 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d  size[(int)typ];.
c830: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72  .    }....    pr
c840: 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
c850: 5b 5d 20 5f 64 62 74 79 70 65 74 6f 63 6f 6c 75  [] _dbtypetocolu
c860: 6d 6e 73 69 7a 65 20 3d 20 7b 0d 0a 20 20 20 20  mnsize = {..    
c870: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
c880: 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30  // AnsiString (0
c890: 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78  )..      int.Max
c8a0: 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79  Value, // Binary
c8b0: 20 28 31 29 0d 0a 20 20 20 20 20 20 31 2c 20 20   (1)..      1,  
c8c0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74            // Byt
c8d0: 65 20 28 32 29 0d 0a 20 20 20 20 20 20 31 2c 20  e (2)..      1, 
c8e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42 6f             // Bo
c8f0: 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20  olean (3)..     
c900: 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   8,            /
c910: 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a  / Currency (4)..
c920: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
c930: 20 20 20 20 2f 2f 20 44 61 74 65 20 28 35 29 0d      // Date (5).
c940: 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20  .      8,       
c950: 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65       // DateTime
c960: 20 28 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20   (6)..      8,  
c970: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63            // Dec
c980: 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20  imal (7)..      
c990: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  8,            //
c9a0: 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20   Double (8)..   
c9b0: 20 20 20 31 36 2c 20 20 20 20 20 20 20 20 20 20     16,          
c9c0: 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20   // Guid (9)..  
c9d0: 20 20 20 20 32 2c 20 20 20 20 20 20 20 20 20 20      2,          
c9e0: 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d    // Int16 (10).
c9f0: 0a 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20  .      4,       
ca00: 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31       // Int32 (1
ca10: 31 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  1)..      8,    
ca20: 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34          // Int64
ca30: 20 28 31 32 29 0d 0a 20 20 20 20 20 20 69 6e 74   (12)..      int
ca40: 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 4f 62  .MaxValue, // Ob
ca50: 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20  ject (13)..     
ca60: 20 31 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f   1,            /
ca70: 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20  / SByte (14)..  
ca80: 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20      4,          
ca90: 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29    // Single (15)
caa0: 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56  ..      int.MaxV
cab0: 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20  alue, // String 
cac0: 28 31 36 29 0d 0a 20 20 20 20 20 20 38 2c 20 20  (16)..      8,  
cad0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 69 6d            // Tim
cae0: 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20 32 2c  e (17)..      2,
caf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55              // U
cb00: 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20  Int16 (18)..    
cb10: 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20 20    4,            
cb20: 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a  // UInt32 (19)..
cb30: 20 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20        8,        
cb40: 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32      // UInt64 (2
cb50: 30 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20  0)..      8,    
cb60: 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75          // VarNu
cb70: 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20  meric (21)..    
cb80: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20    int.MaxValue, 
cb90: 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78  // AnsiStringFix
cba0: 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20  edLength (22).. 
cbb0: 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75       int.MaxValu
cbc0: 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65  e, // StringFixe
cbd0: 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20  dLength (23)..  
cbe0: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
cbf0: 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20  , // ?? (24)..  
cc00: 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65      int.MaxValue
cc10: 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20  , // Xml (25).. 
cc20: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20       8,         
cc30: 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 32 20     // DateTime2 
cc40: 28 32 36 29 0d 0a 20 20 20 20 20 20 31 30 20 20  (26)..      10  
cc50: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 61 74            // Dat
cc60: 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37 29  eTimeOffset (27)
cc70: 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20  ..    };....    
cc80: 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20  internal static 
cc90: 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e  object DbTypeToN
cca0: 75 6d 65 72 69 63 50 72 65 63 69 73 69 6f 6e 28  umericPrecision(
ccb0: 44 62 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20  DbType typ)..   
ccc0: 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e   {..      return
ccd0: 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69   _dbtypetonumeri
cce0: 63 70 72 65 63 69 73 69 6f 6e 5b 28 69 6e 74 29  cprecision[(int)
ccf0: 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  typ];..    }....
cd00: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
cd10: 69 63 20 6f 62 6a 65 63 74 5b 5d 20 5f 64 62 74  ic object[] _dbt
cd20: 79 70 65 74 6f 6e 75 6d 65 72 69 63 70 72 65 63  ypetonumericprec
cd30: 69 73 69 6f 6e 20 3d 20 7b 0d 0a 20 20 20 20 20  ision = {..     
cd40: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
cd50: 2f 20 41 6e 73 69 53 74 72 69 6e 67 20 28 30 29  / AnsiString (0)
cd60: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
cd70: 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61 72 79 20  alue, // Binary 
cd80: 28 31 29 0d 0a 20 20 20 20 20 20 33 2c 20 20 20  (1)..      3,   
cd90: 20 20 20 20 20 20 20 20 20 2f 2f 20 42 79 74 65           // Byte
cda0: 20 28 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75   (2)..      DBNu
cdb0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 6f 6f  ll.Value, // Boo
cdc0: 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20  lean (3)..      
cdd0: 31 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f  19,           //
cde0: 20 43 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20   Currency (4).. 
cdf0: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
ce00: 65 2c 20 2f 2f 20 44 61 74 65 20 28 35 29 0d 0a  e, // Date (5)..
ce10: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
ce20: 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 20  ue, // DateTime 
ce30: 28 36 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20  (6)..      53,  
ce40: 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 69           // Deci
ce50: 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 35  mal (7)..      5
ce60: 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  3,           // 
ce70: 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20 20 20  Double (8)..    
ce80: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
ce90: 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a 20 20 20  // Guid (9)..   
cea0: 20 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20     5,           
ceb0: 20 2f 2f 20 49 6e 74 31 36 20 28 31 30 29 0d 0a   // Int16 (10)..
cec0: 20 20 20 20 20 20 31 30 2c 20 20 20 20 20 20 20        10,       
ced0: 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 31      // Int32 (11
cee0: 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20 20 20  )..      19,    
cef0: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 36 34 20         // Int64 
cf00: 28 31 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75  (12)..      DBNu
cf10: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 4f 62 6a  ll.Value, // Obj
cf20: 65 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20  ect (13)..      
cf30: 33 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  3,            //
cf40: 20 53 42 79 74 65 20 28 31 34 29 0d 0a 20 20 20   SByte (14)..   
cf50: 20 20 20 32 34 2c 20 20 20 20 20 20 20 20 20 20     24,          
cf60: 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 0d   // Single (15).
cf70: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
cf80: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 20 28  lue, // String (
cf90: 31 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  16)..      DBNul
cfa0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 54 69 6d 65  l.Value, // Time
cfb0: 20 28 31 37 29 0d 0a 20 20 20 20 20 20 35 2c 20   (17)..      5, 
cfc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49             // UI
cfd0: 6e 74 31 36 20 28 31 38 29 0d 0a 20 20 20 20 20  nt16 (18)..     
cfe0: 20 31 30 2c 20 20 20 20 20 20 20 20 20 20 20 2f   10,           /
cff0: 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a 20  / UInt32 (19).. 
d000: 20 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 20       19,        
d010: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30     // UInt64 (20
d020: 29 0d 0a 20 20 20 20 20 20 35 33 2c 20 20 20 20  )..      53,    
d030: 20 20 20 20 20 20 20 2f 2f 20 56 61 72 4e 75 6d         // VarNum
d040: 65 72 69 63 20 28 32 31 29 0d 0a 20 20 20 20 20  eric (21)..     
d050: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f   DBNull.Value, /
d060: 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  / AnsiStringFixe
d070: 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20  dLength (22)..  
d080: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
d090: 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 64  , // StringFixed
d0a0: 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 20  Length (23)..   
d0b0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
d0c0: 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20 20 20   // ?? (24)..   
d0d0: 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c     DBNull.Value,
d0e0: 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d 0a 20 20   // Xml (25)..  
d0f0: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
d100: 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 32 20 28  , // DateTime2 (
d110: 32 36 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  26)..      DBNul
d120: 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 44 61 74 65  l.Value  // Date
d130: 54 69 6d 65 4f 66 66 73 65 74 20 28 32 37 29 0d  TimeOffset (27).
d140: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 69  .    };....    i
d150: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 6f  nternal static o
d160: 62 6a 65 63 74 20 44 62 54 79 70 65 54 6f 4e 75  bject DbTypeToNu
d170: 6d 65 72 69 63 53 63 61 6c 65 28 44 62 54 79 70  mericScale(DbTyp
d180: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
d190: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
d1a0: 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 63 61 6c  ypetonumericscal
d1b0: 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20  e[(int)typ];..  
d1c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61    }....    priva
d1d0: 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74  te static object
d1e0: 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65  [] _dbtypetonume
d1f0: 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d 0a 20 20  ricscale = {..  
d200: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
d210: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 20  , // AnsiString 
d220: 28 30 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c  (0)..      DBNul
d230: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 69 6e 61  l.Value, // Bina
d240: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 30 2c  ry (1)..      0,
d250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
d260: 79 74 65 20 28 32 29 0d 0a 20 20 20 20 20 20 44  yte (2)..      D
d270: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
d280: 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20  Boolean (3)..   
d290: 20 20 20 34 2c 20 20 20 20 20 20 20 20 20 20 20     4,           
d2a0: 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 34 29   // Currency (4)
d2b0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56  ..      DBNull.V
d2c0: 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 20 28 35  alue, // Date (5
d2d0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e  )..      DBNull.
d2e0: 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69  Value, // DateTi
d2f0: 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 20 44 42  me (6)..      DB
d300: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44  Null.Value, // D
d310: 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20  ecimal (7)..    
d320: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20    DBNull.Value, 
d330: 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20  // Double (8).. 
d340: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75       DBNull.Valu
d350: 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 29 0d 0a  e, // Guid (9)..
d360: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20        0,        
d370: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31 30      // Int16 (10
d380: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20  )..      0,     
d390: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 33 32 20         // Int32 
d3a0: 28 31 31 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (11)..      0,  
d3b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74            // Int
d3c0: 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 20 44  64 (12)..      D
d3d0: 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20  BNull.Value, // 
d3e0: 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a 20 20 20  Object (13)..   
d3f0: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20     0,           
d400: 20 2f 2f 20 53 42 79 74 65 20 28 31 34 29 0d 0a   // SByte (14)..
d410: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
d420: 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31  ue, // Single (1
d430: 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c  5)..      DBNull
d440: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e  .Value, // Strin
d450: 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 44 42  g (16)..      DB
d460: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 54  Null.Value, // T
d470: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
d480: 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  0,            //
d490: 20 55 49 6e 74 31 36 20 28 31 38 29 0d 0a 20 20   UInt16 (18)..  
d4a0: 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20      0,          
d4b0: 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29    // UInt32 (19)
d4c0: 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20  ..      0,      
d4d0: 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 36 34 20        // UInt64 
d4e0: 28 32 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20  (20)..      0,  
d4f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 61 72            // Var
d500: 4e 75 6d 65 72 69 63 20 28 32 31 29 0d 0a 20 20  Numeric (21)..  
d510: 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65      DBNull.Value
d520: 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e 67 46  , // AnsiStringF
d530: 69 78 65 64 4c 65 6e 67 74 68 20 28 32 32 29 0d  ixedLength (22).
d540: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
d550: 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e 67 46 69  lue, // StringFi
d560: 78 65 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a  xedLength (23)..
d570: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
d580: 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a  ue, // ?? (24)..
d590: 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c        DBNull.Val
d5a0: 75 65 2c 20 2f 2f 20 58 6d 6c 20 28 32 35 29 0d  ue, // Xml (25).
d5b0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61  .      DBNull.Va
d5c0: 6c 75 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65  lue, // DateTime
d5d0: 32 20 28 32 36 29 0d 0a 20 20 20 20 20 20 44 42  2 (26)..      DB
d5e0: 4e 75 6c 6c 2e 56 61 6c 75 65 20 20 2f 2f 20 44  Null.Value  // D
d5f0: 61 74 65 54 69 6d 65 4f 66 66 73 65 74 20 28 32  ateTimeOffset (2
d600: 37 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20  7)..    };....  
d610: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
d620: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
d630: 6e 65 73 20 74 68 65 20 64 65 66 61 75 6c 74 20  nes the default 
d640: 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61  database type na
d650: 6d 65 20 74 6f 20 62 65 20 75 73 65 64 20 77 68  me to be used wh
d660: 65 6e 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 70 65  en a..    /// pe
d670: 72 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 76 61 6c  r-connection val
d680: 75 65 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61  ue is not availa
d690: 62 6c 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ble...    /// </
d6a0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
d6b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63  / <param name="c
d6c0: 6f 6e 6e 65 63 74 69 6f 6e 22 3e 0d 0a 20 20 20  onnection">..   
d6d0: 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74   /// The connect
d6e0: 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66 6f 72 20  ion context for 
d6f0: 74 79 70 65 20 6d 61 70 70 69 6e 67 73 2c 20 69  type mappings, i
d700: 66 20 61 6e 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20  f any...    /// 
d710: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
d720: 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  / <returns>..   
d730: 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74   /// The default
d740: 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 6e   database type n
d750: 61 6d 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20  ame to use...   
d760: 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d   /// </returns>.
d770: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
d780: 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 44 65  tic string GetDe
d790: 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 28 0d 0a  faultTypeName(..
d7a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
d7b0: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
d7c0: 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ion..        )..
d7d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53      {..        S
d7e0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d7f0: 6c 61 67 73 20 66 6c 61 67 73 20 3d 20 28 63 6f  lags flags = (co
d800: 6e 6e 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  nnection != null
d810: 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
d820: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67   connection.Flag
d830: 73 20 3a 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  s : SQLiteConnec
d840: 74 69 6f 6e 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d  tionFlags.None;.
d850: 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 48  ...        if (H
d860: 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73  elperMethods.Has
d870: 46 6c 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20  Flags(..        
d880: 20 20 20 20 20 20 20 20 66 6c 61 67 73 2c 20 53          flags, S
d890: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
d8a0: 6c 61 67 73 2e 4e 6f 43 6f 6e 76 65 72 74 53 65  lags.NoConvertSe
d8b0: 74 74 69 6e 67 73 29 29 0d 0a 20 20 20 20 20 20  ttings))..      
d8c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
d8d0: 20 72 65 74 75 72 6e 20 46 61 6c 6c 62 61 63 6b   return Fallback
d8e0: 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b  DefaultTypeName;
d8f0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
d900: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
d910: 6d 65 20 3d 20 22 55 73 65 5f 53 51 4c 69 74 65  me = "Use_SQLite
d920: 43 6f 6e 76 65 72 74 5f 44 65 66 61 75 6c 74 54  Convert_DefaultT
d930: 79 70 65 4e 61 6d 65 22 3b 0d 0a 20 20 20 20 20  ypeName";..     
d940: 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 20     object value 
d950: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
d960: 20 73 74 72 69 6e 67 20 40 64 65 66 61 75 6c 74   string @default
d970: 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   = null;....    
d980: 20 20 20 20 69 66 20 28 28 63 6f 6e 6e 65 63 74      if ((connect
d990: 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d  ion == null) ||.
d9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 21 63 6f  .            !co
d9b0: 6e 6e 65 63 74 69 6f 6e 2e 54 72 79 47 65 74 43  nnection.TryGetC
d9c0: 61 63 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d  achedSetting(nam
d9d0: 65 2c 20 40 64 65 66 61 75 6c 74 2c 20 6f 75 74  e, @default, out
d9e0: 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20   value))..      
d9f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
da00: 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
da10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
da20: 20 20 20 20 20 76 61 6c 75 65 20 3d 20 55 6e 73       value = Uns
da30: 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73  afeNativeMethods
da40: 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75 65  .GetSettingValue
da50: 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74 29  (name, @default)
da60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
da70: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
da80: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c               val
daa0: 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65 66  ue = FallbackDef
dab0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  aultTypeName;.. 
dac0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
dad0: 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
dae0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
daf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db00: 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e    if (connection
db10: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
db20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
db30: 6f 6e 6e 65 63 74 69 6f 6e 2e 53 65 74 43 61 63  onnection.SetCac
db40: 68 65 64 53 65 74 74 69 6e 67 28 6e 61 6d 65 2c  hedSetting(name,
db50: 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
db60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
db70: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65   }....        re
db80: 74 75 72 6e 20 53 65 74 74 69 6e 67 56 61 6c 75  turn SettingValu
db90: 65 54 6f 53 74 72 69 6e 67 28 76 61 6c 75 65 29  eToString(value)
dba0: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 23 69 66 20  ;..    }....#if 
dbb0: 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20  !NET_COMPACT_20 
dbc0: 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47  && TRACE_WARNING
dbd0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
dbe0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  ry>..    /// If 
dbf0: 61 70 70 6c 69 63 61 62 6c 65 2c 20 69 73 73 75  applicable, issu
dc00: 65 73 20 61 20 74 72 61 63 65 20 6c 6f 67 20 6d  es a trace log m
dc10: 65 73 73 61 67 65 20 77 61 72 6e 69 6e 67 20 61  essage warning a
dc20: 62 6f 75 74 20 66 61 6c 6c 69 6e 67 20 62 61 63  bout falling bac
dc30: 6b 20 74 6f 0d 0a 20 20 20 20 2f 2f 2f 20 74 68  k to..    /// th
dc40: 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
dc50: 73 65 20 74 79 70 65 20 6e 61 6d 65 2e 0d 0a 20  se type name... 
dc60: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
dc70: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
dc80: 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e  m name="dbType">
dc90: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61  ..    /// The da
dca0: 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70  tabase value typ
dcb0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
dcc0: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70  ram>..    /// <p
dcd0: 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6c 61 67 73  aram name="flags
dce0: 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20  ">..    /// The 
dcf0: 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74 65 64  flags associated
dd00: 20 77 69 74 68 20 74 68 65 20 70 61 72 65 6e 74   with the parent
dd10: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62 6a 65   connection obje
dd20: 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70  ct...    /// </p
dd30: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
dd40: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65  param name="type
dd50: 4e 61 6d 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  Name">..    /// 
dd60: 54 68 65 20 74 65 78 74 75 61 6c 20 6e 61 6d 65  The textual name
dd70: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
dd80: 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20   type...    /// 
dd90: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70 72  </param>..    pr
dda0: 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
ddb0: 64 20 44 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  d DefaultTypeNam
ddc0: 65 57 61 72 6e 69 6e 67 28 0d 0a 20 20 20 20 20  eWarning(..     
ddd0: 20 20 20 44 62 54 79 70 65 20 64 62 54 79 70 65     DbType dbType
dde0: 2c 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  ,..        SQLit
ddf0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
de00: 20 66 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20   flags,..       
de10: 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
de20: 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
de30: 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
de40: 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 48 61  HelperMethods.Ha
de50: 73 46 6c 61 67 73 28 66 6c 61 67 73 2c 20 53 51  sFlags(flags, SQ
de60: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
de70: 61 67 73 2e 54 72 61 63 65 57 61 72 6e 69 6e 67  ags.TraceWarning
de80: 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ))..        {.. 
de90: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
dea0: 2e 57 72 69 74 65 4c 69 6e 65 28 48 65 6c 70 65  .WriteLine(Helpe
deb0: 72 4d 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46  rMethods.StringF
dec0: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
ded0: 20 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49          CultureI
dee0: 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74 75  nfo.CurrentCultu
def0: 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  re,..           
df00: 20 20 20 20 20 22 57 41 52 4e 49 4e 47 3a 20 54       "WARNING: T
df10: 79 70 65 20 6d 61 70 70 69 6e 67 20 66 61 69 6c  ype mapping fail
df20: 65 64 2c 20 72 65 74 75 72 6e 69 6e 67 20 64 65  ed, returning de
df30: 66 61 75 6c 74 20 6e 61 6d 65 20 5c 22 7b 30 7d  fault name \"{0}
df40: 5c 22 20 66 6f 72 20 74 79 70 65 20 7b 31 7d 2e  \" for type {1}.
df50: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
df60: 20 20 20 20 74 79 70 65 4e 61 6d 65 2c 20 64 62      typeName, db
df70: 54 79 70 65 29 29 3b 0d 0a 20 20 20 20 20 20 20  Type));..       
df80: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
df90: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
dfa0: 20 20 20 20 2f 2f 2f 20 49 66 20 61 70 70 6c 69      /// If appli
dfb0: 63 61 62 6c 65 2c 20 69 73 73 75 65 73 20 61 20  cable, issues a 
dfc0: 74 72 61 63 65 20 6c 6f 67 20 6d 65 73 73 61 67  trace log messag
dfd0: 65 20 77 61 72 6e 69 6e 67 20 61 62 6f 75 74 20  e warning about 
dfe0: 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 0d  falling back to.
dff0: 0a 20 20 20 20 2f 2f 2f 20 74 68 65 20 64 65 66  .    /// the def
e000: 61 75 6c 74 20 64 61 74 61 62 61 73 65 20 76 61  ault database va
e010: 6c 75 65 20 74 79 70 65 2e 0d 0a 20 20 20 20 2f  lue type...    /
e020: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
e030: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
e040: 6d 65 3d 22 74 79 70 65 4e 61 6d 65 22 3e 0d 0a  me="typeName">..
e050: 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
e060: 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  ual name of the 
e070: 64 61 74 61 62 61 73 65 20 74 79 70 65 2e 0d 0a  database type...
e080: 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e      /// </param>
e090: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
e0a0: 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 0d 0a   name="flags">..
e0b0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 66 6c 61 67      /// The flag
e0c0: 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
e0d0: 68 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e  h the parent con
e0e0: 6e 65 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 0d  nection object..
e0f0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
e100: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
e110: 6d 20 6e 61 6d 65 3d 22 64 62 54 79 70 65 22 3e  m name="dbType">
e120: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61  ..    /// The da
e130: 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 79 70  tabase value typ
e140: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  e...    /// </pa
e150: 72 61 6d 3e 0d 0a 20 20 20 20 70 72 69 76 61 74  ram>..    privat
e160: 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 44 65  e static void De
e170: 66 61 75 6c 74 44 62 54 79 70 65 57 61 72 6e 69  faultDbTypeWarni
e180: 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73 74 72  ng(..        str
e190: 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a 20  ing typeName,.. 
e1a0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
e1b0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
e1c0: 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54  gs,..        DbT
e1d0: 79 70 65 3f 20 64 62 54 79 70 65 0d 0a 20 20 20  ype? dbType..   
e1e0: 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20       )..    {.. 
e1f0: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
e200: 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
e210: 28 74 79 70 65 4e 61 6d 65 29 20 26 26 0d 0a 20  (typeName) &&.. 
e220: 20 20 20 20 20 20 20 20 20 20 20 48 65 6c 70 65             Helpe
e230: 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c 61 67  rMethods.HasFlag
e240: 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74 65 43  s(flags, SQLiteC
e250: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 54  onnectionFlags.T
e260: 72 61 63 65 57 61 72 6e 69 6e 67 29 29 0d 0a 20  raceWarning)).. 
e270: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e280: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74        Trace.Writ
e290: 65 4c 69 6e 65 28 48 65 6c 70 65 72 4d 65 74 68  eLine(HelperMeth
e2a0: 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74  ods.StringFormat
e2b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
e2c0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43     CultureInfo.C
e2d0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a  urrentCulture,..
e2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e2f0: 22 57 41 52 4e 49 4e 47 3a 20 54 79 70 65 20 6d  "WARNING: Type m
e300: 61 70 70 69 6e 67 20 66 61 69 6c 65 64 2c 20 72  apping failed, r
e310: 65 74 75 72 6e 69 6e 67 20 64 65 66 61 75 6c 74  eturning default
e320: 20 74 79 70 65 20 7b 30 7d 20 66 6f 72 20 6e 61   type {0} for na
e330: 6d 65 20 5c 22 7b 31 7d 5c 22 2e 22 2c 0d 0a 20  me \"{1}\".",.. 
e340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
e350: 62 54 79 70 65 2c 20 74 79 70 65 4e 61 6d 65 29  bType, typeName)
e360: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
e370: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a     }..#endif....
e380: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
e390: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 61  >..    /// For a
e3a0: 20 67 69 76 65 6e 20 64 61 74 61 62 61 73 65 20   given database 
e3b0: 76 61 6c 75 65 20 74 79 70 65 2c 20 72 65 74 75  value type, retu
e3c0: 72 6e 20 74 68 65 20 22 63 6c 6f 73 65 73 74 2d  rn the "closest-
e3d0: 6d 61 74 63 68 22 20 74 65 78 74 75 61 6c 20 64  match" textual d
e3e0: 61 74 61 62 61 73 65 20 74 79 70 65 20 6e 61 6d  atabase type nam
e3f0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
e400: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
e410: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e  <param name="con
e420: 6e 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e  nection">The con
e430: 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20  nection context 
e440: 66 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20  for custom type 
e450: 6d 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79  mappings, if any
e460: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f  .</param>..    /
e470: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
e480: 64 62 54 79 70 65 22 3e 54 68 65 20 64 61 74 61  dbType">The data
e490: 62 61 73 65 20 76 61 6c 75 65 20 74 79 70 65 2e  base value type.
e4a0: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
e4b0: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
e4c0: 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20  lags">The flags 
e4d0: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
e4e0: 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6e 6e 65  the parent conne
e4f0: 63 74 69 6f 6e 20 6f 62 6a 65 63 74 2e 3c 2f 70  ction object.</p
e500: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  aram>..    /// <
e510: 72 65 74 75 72 6e 73 3e 54 68 65 20 74 79 70 65  returns>The type
e520: 20 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74   name or an empt
e530: 79 20 73 74 72 69 6e 67 20 69 66 20 69 74 20 63  y string if it c
e540: 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69  annot be determi
e550: 6e 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ned.</returns>..
e560: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
e570: 74 69 63 20 73 74 72 69 6e 67 20 44 62 54 79 70  tic string DbTyp
e580: 65 54 6f 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20  eToTypeName(..  
e590: 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e        SQLiteConn
e5a0: 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
e5b0: 6e 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79  n,..        DbTy
e5c0: 70 65 20 64 62 54 79 70 65 2c 0d 0a 20 20 20 20  pe dbType,..    
e5d0: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
e5e0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 0d  tionFlags flags.
e5f0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
e600: 7b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  {..        strin
e610: 67 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61 6d  g defaultTypeNam
e620: 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  e = null;....   
e630: 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74       if (connect
e640: 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ion != null)..  
e650: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e660: 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 63 6f       flags |= co
e670: 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 3b 0d  nnection.Flags;.
e680: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
e690: 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f 64 73  f (HelperMethods
e6a0: 2e 48 61 73 46 6c 61 67 73 28 66 6c 61 67 73 2c  .HasFlags(flags,
e6b0: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
e6c0: 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e 6e 65 63  nFlags.UseConnec
e6d0: 74 69 6f 6e 54 79 70 65 73 29 29 0d 0a 20 20 20  tionTypes))..   
e6e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
e6f0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
e700: 74 65 44 62 54 79 70 65 4d 61 70 20 63 6f 6e 6e  teDbTypeMap conn
e710: 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 20  ectionTypeNames 
e720: 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 5f 74 79  = connection._ty
e730: 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20 20 20 20  peNames;....    
e740: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e750: 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61  connectionTypeNa
e760: 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  mes != null)..  
e770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e790: 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
e7a0: 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d  eMapping value;.
e7b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
e7c0: 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e 65         if (conne
e7d0: 63 74 69 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54  ctionTypeNames.T
e7e0: 72 79 47 65 74 56 61 6c 75 65 28 64 62 54 79 70  ryGetValue(dbTyp
e7f0: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a  e, out value))..
e800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e810: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
e820: 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65 3b 0d 0a  alue.typeName;..
e830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e840: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
e850: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e860: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
e870: 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65  // NOTE: Use the
e880: 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61 73   default databas
e890: 65 20 74 79 70 65 20 6e 61 6d 65 20 66 6f 72 20  e type name for 
e8a0: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d  the connection..
e8b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
e8c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66  .            def
e8d0: 61 75 6c 74 54 79 70 65 4e 61 6d 65 20 3d 20 63  aultTypeName = c
e8e0: 6f 6e 6e 65 63 74 69 6f 6e 2e 44 65 66 61 75 6c  onnection.Defaul
e8f0: 74 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  tTypeName;..    
e900: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
e910: 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68 6f   if (HelperMetho
e920: 64 73 2e 48 61 73 46 6c 61 67 73 28 66 6c 61 67  ds.HasFlags(flag
e930: 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  s, SQLiteConnect
e940: 69 6f 6e 46 6c 61 67 73 2e 4e 6f 47 6c 6f 62 61  ionFlags.NoGloba
e950: 6c 54 79 70 65 73 29 29 0d 0a 20 20 20 20 20 20  lTypes))..      
e960: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e970: 20 69 66 20 28 64 65 66 61 75 6c 74 54 79 70 65   if (defaultType
e980: 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
e990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
e9a0: 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54 79 70  eturn defaultTyp
e9b0: 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
e9c0: 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 70        defaultTyp
e9d0: 65 4e 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75  eName = GetDefau
e9e0: 6c 74 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65  ltTypeName(conne
e9f0: 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21  ction);....#if !
ea00: 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26  NET_COMPACT_20 &
ea10: 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d  & TRACE_WARNING.
ea20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 66  .            Def
ea30: 61 75 6c 74 54 79 70 65 4e 61 6d 65 57 61 72 6e  aultTypeNameWarn
ea40: 69 6e 67 28 64 62 54 79 70 65 2c 20 66 6c 61 67  ing(dbType, flag
ea50: 73 2c 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  s, defaultTypeNa
ea60: 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a  me);..#endif....
ea70: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ea80: 72 6e 20 64 65 66 61 75 6c 74 54 79 70 65 4e 61  rn defaultTypeNa
ea90: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  me;..        }..
eaa0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
eab0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44           SQLiteD
eac0: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c  bTypeMapping val
ead0: 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ue;....         
eae0: 20 20 20 69 66 20 28 28 5f 74 79 70 65 4e 61 6d     if ((_typeNam
eaf0: 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26 0d 0a  es != null) &&..
eb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb10: 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 65  _typeNames.TryGe
eb20: 74 56 61 6c 75 65 28 64 62 54 79 70 65 2c 20 6f  tValue(dbType, o
eb30: 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20  ut value))..    
eb40: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
eb50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
eb60: 6e 20 76 61 6c 75 65 2e 74 79 70 65 4e 61 6d 65  n value.typeName
eb70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
eb80: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
eb90: 20 20 20 20 20 20 20 69 66 20 28 64 65 66 61 75         if (defau
eba0: 6c 74 54 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75  ltTypeName != nu
ebb0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
ebc0: 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 54   return defaultT
ebd0: 79 70 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ypeName;....    
ebe0: 20 20 20 20 64 65 66 61 75 6c 74 54 79 70 65 4e      defaultTypeN
ebf0: 61 6d 65 20 3d 20 47 65 74 44 65 66 61 75 6c 74  ame = GetDefault
ec00: 54 79 70 65 4e 61 6d 65 28 63 6f 6e 6e 65 63 74  TypeName(connect
ec10: 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45  ion);....#if !NE
ec20: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20  T_COMPACT_20 && 
ec30: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20  TRACE_WARNING.. 
ec40: 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 54 79         DefaultTy
ec50: 70 65 4e 61 6d 65 57 61 72 6e 69 6e 67 28 64 62  peNameWarning(db
ec60: 54 79 70 65 2c 20 66 6c 61 67 73 2c 20 64 65 66  Type, flags, def
ec70: 61 75 6c 74 54 79 70 65 4e 61 6d 65 29 3b 0d 0a  aultTypeName);..
ec80: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
ec90: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74    return default
eca0: 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 7d  TypeName;..    }
ecb0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
ecc0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
ecd0: 6f 6e 76 65 72 74 20 61 20 44 62 54 79 70 65 20  onvert a DbType 
ece0: 74 6f 20 61 20 54 79 70 65 0d 0a 20 20 20 20 2f  to a Type..    /
ecf0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
ed00: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
ed10: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62 54  me="typ">The DbT
ed20: 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 66  ype to convert f
ed30: 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20  rom</param>..   
ed40: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68   /// <returns>Th
ed50: 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20  e closest-match 
ed60: 2e 4e 45 54 20 74 79 70 65 3c 2f 72 65 74 75 72  .NET type</retur
ed70: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ns>..    interna
ed80: 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 44 62  l static Type Db
ed90: 54 79 70 65 54 6f 54 79 70 65 28 44 62 54 79 70  TypeToType(DbTyp
eda0: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20  e typ)..    {.. 
edb0: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74       return _dbt
edc0: 79 70 65 54 6f 54 79 70 65 5b 28 69 6e 74 29 74  ypeToType[(int)t
edd0: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  yp];..    }.... 
ede0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
edf0: 63 20 54 79 70 65 5b 5d 20 5f 64 62 74 79 70 65  c Type[] _dbtype
ee00: 54 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20  ToType = {..    
ee10: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29    typeof(string)
ee20: 2c 20 20 20 20 20 20 20 20 2f 2f 20 41 6e 73 69  ,        // Ansi
ee30: 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20  String (0)..    
ee40: 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29    typeof(byte[])
ee50: 2c 20 20 20 20 20 20 20 20 2f 2f 20 42 69 6e 61  ,        // Bina
ee60: 72 79 20 28 31 29 0d 0a 20 20 20 20 20 20 74 79  ry (1)..      ty
ee70: 70 65 6f 66 28 62 79 74 65 29 2c 20 20 20 20 20  peof(byte),     
ee80: 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29       // Byte (2)
ee90: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 62  ..      typeof(b
eea0: 6f 6f 6c 29 2c 20 20 20 20 20 20 20 20 20 20 2f  ool),          /
eeb0: 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20  / Boolean (3).. 
eec0: 20 20 20 20 20 74 79 70 65 6f 66 28 64 65 63 69       typeof(deci
eed0: 6d 61 6c 29 2c 20 20 20 20 20 20 20 2f 2f 20 43  mal),       // C
eee0: 75 72 72 65 6e 63 79 20 28 34 29 0d 0a 20 20 20  urrency (4)..   
eef0: 20 20 20 74 79 70 65 6f 66 28 44 61 74 65 54 69     typeof(DateTi
ef00: 6d 65 29 2c 20 20 20 20 20 20 2f 2f 20 44 61 74  me),      // Dat
ef10: 65 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79 70  e (5)..      typ
ef20: 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20 20  eof(DateTime),  
ef30: 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d 65 20      // DateTime 
ef40: 28 36 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  (6)..      typeo
ef50: 66 28 64 65 63 69 6d 61 6c 29 2c 20 20 20 20 20  f(decimal),     
ef60: 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 29    // Decimal (7)
ef70: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64  ..      typeof(d
ef80: 6f 75 62 6c 65 29 2c 20 20 20 20 20 20 20 20 2f  ouble),        /
ef90: 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d 0a 20 20  / Double (8)..  
efa0: 20 20 20 20 74 79 70 65 6f 66 28 47 75 69 64 29      typeof(Guid)
efb0: 2c 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75  ,          // Gu
efc0: 69 64 20 28 39 29 0d 0a 20 20 20 20 20 20 74 79  id (9)..      ty
efd0: 70 65 6f 66 28 49 6e 74 31 36 29 2c 20 20 20 20  peof(Int16),    
efe0: 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 31       // Int16 (1
eff0: 30 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  0)..      typeof
f000: 28 49 6e 74 33 32 29 2c 20 20 20 20 20 20 20 20  (Int32),        
f010: 20 2f 2f 20 49 6e 74 33 32 20 28 31 31 29 0d 0a   // Int32 (11)..
f020: 20 20 20 20 20 20 74 79 70 65 6f 66 28 49 6e 74        typeof(Int
f030: 36 34 29 2c 20 20 20 20 20 20 20 20 20 2f 2f 20  64),         // 
f040: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20  Int64 (12)..    
f050: 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29    typeof(object)
f060: 2c 20 20 20 20 20 20 20 20 2f 2f 20 4f 62 6a 65  ,        // Obje
f070: 63 74 20 28 31 33 29 0d 0a 20 20 20 20 20 20 74  ct (13)..      t
f080: 79 70 65 6f 66 28 73 62 79 74 65 29 2c 20 20 20  ypeof(sbyte),   
f090: 20 20 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28        // SByte (
f0a0: 31 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f  14)..      typeo
f0b0: 66 28 66 6c 6f 61 74 29 2c 20 20 20 20 20 20 20  f(float),       
f0c0: 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29    // Single (15)
f0d0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
f0e0: 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f  tring),        /
f0f0: 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20  / String (16).. 
f100: 20 20 20 20 20 74 79 70 65 6f 66 28 44 61 74 65       typeof(Date
f110: 54 69 6d 65 29 2c 20 20 20 20 20 20 2f 2f 20 54  Time),      // T
f120: 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 20 20 20  ime (17)..      
f130: 74 79 70 65 6f 66 28 55 49 6e 74 31 36 29 2c 20  typeof(UInt16), 
f140: 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36         // UInt16
f150: 20 28 31 38 29 0d 0a 20 20 20 20 20 20 74 79 70   (18)..      typ
f160: 65 6f 66 28 55 49 6e 74 33 32 29 2c 20 20 20 20  eof(UInt32),    
f170: 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31      // UInt32 (1
f180: 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  9)..      typeof
f190: 28 55 49 6e 74 36 34 29 2c 20 20 20 20 20 20 20  (UInt64),       
f1a0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 32 30 29 0d   // UInt64 (20).
f1b0: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 6f  .      typeof(do
f1c0: 75 62 6c 65 29 2c 20 20 20 20 20 20 20 20 2f 2f  uble),        //
f1d0: 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29   VarNumeric (21)
f1e0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73  ..      typeof(s
f1f0: 74 72 69 6e 67 29 2c 20 20 20 20 20 20 20 20 2f  tring),        /
f200: 2f 20 41 6e 73 69 53 74 72 69 6e 67 46 69 78 65  / AnsiStringFixe
f210: 64 4c 65 6e 67 74 68 20 28 32 32 29 0d 0a 20 20  dLength (22)..  
f220: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e      typeof(strin
f230: 67 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 53 74  g),        // St
f240: 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20  ringFixedLength 
f250: 28 32 33 29 0d 0a 20 20 20 20 20 20 74 79 70 65  (23)..      type
f260: 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 20 20 20  of(string),     
f270: 20 20 20 2f 2f 20 3f 3f 20 28 32 34 29 0d 0a 20     // ?? (24).. 
f280: 20 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69       typeof(stri
f290: 6e 67 29 2c 20 20 20 20 20 20 20 20 2f 2f 20 58  ng),        // X
f2a0: 6d 6c 20 28 32 35 29 0d 0a 20 20 20 20 20 20 74  ml (25)..      t
f2b0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c  ypeof(DateTime),
f2c0: 20 20 20 20 20 20 2f 2f 20 44 61 74 65 54 69 6d        // DateTim
f2d0: 65 32 20 28 32 36 29 0d 0a 23 69 66 20 21 50 4c  e2 (26)..#if !PL
f2e0: 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52  ATFORM_COMPACTFR
f2f0: 41 4d 45 57 4f 52 4b 20 26 26 20 28 4e 45 54 5f  AMEWORK && (NET_
f300: 33 35 20 7c 7c 20 4e 45 54 5f 34 30 20 7c 7c 20  35 || NET_40 || 
f310: 4e 45 54 5f 34 35 20 7c 7c 20 4e 45 54 5f 34 35  NET_45 || NET_45
f320: 31 20 7c 7c 20 4e 45 54 5f 34 35 32 20 7c 7c 20  1 || NET_452 || 
f330: 4e 45 54 5f 34 36 20 7c 7c 20 4e 45 54 5f 34 36  NET_46 || NET_46
f340: 31 20 7c 7c 20 4e 45 54 5f 34 36 32 20 7c 7c 20  1 || NET_462 || 
f350: 4e 45 54 5f 34 37 20 7c 7c 20 4e 45 54 5f 34 37  NET_47 || NET_47
f360: 31 20 7c 7c 20 4e 45 54 5f 34 37 32 29 0d 0a 20  1 || NET_472).. 
f370: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 2f       //..      /
f380: 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 74 79 70  / NOTE: This typ
f390: 65 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  e is only availa
f3a0: 62 6c 65 20 6f 6e 20 74 68 65 0d 0a 20 20 20 20  ble on the..    
f3b0: 20 20 2f 2f 20 20 20 20 20 20 20 2e 4e 45 54 20    //       .NET 
f3c0: 46 72 61 6d 65 77 6f 72 6b 20 32 2e 30 20 53 50  Framework 2.0 SP
f3d0: 31 20 61 6e 64 20 6c 61 74 65 72 2e 0d 0a 20 20  1 and later...  
f3e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 74 79      //..      ty
f3f0: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 4f 66 66  peof(DateTimeOff
f400: 73 65 74 29 20 2f 2f 20 44 61 74 65 54 69 6d 65  set) // DateTime
f410: 4f 66 66 73 65 74 20 28 32 37 29 0d 0a 23 65 6c  Offset (27)..#el
f420: 73 65 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66  se..      typeof
f430: 28 44 61 74 65 54 69 6d 65 29 20 20 20 20 20 20  (DateTime)      
f440: 20 2f 2f 20 44 61 74 65 54 69 6d 65 4f 66 66 73   // DateTimeOffs
f450: 65 74 20 28 32 37 29 0d 0a 23 65 6e 64 69 66 0d  et (27)..#endif.
f460: 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f  .    };....    /
f470: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
f480: 20 20 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65    /// For a give
f490: 6e 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 74  n type, return t
f4a0: 68 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68  he closest-match
f4b0: 20 53 51 4c 69 74 65 20 54 79 70 65 41 66 66 69   SQLite TypeAffi
f4c0: 6e 69 74 79 2c 20 77 68 69 63 68 20 6f 6e 6c 79  nity, which only
f4d0: 20 75 6e 64 65 72 73 74 61 6e 64 73 20 61 20 76   understands a v
f4e0: 65 72 79 20 6c 69 6d 69 74 65 64 20 73 75 62 73  ery limited subs
f4f0: 65 74 20 6f 66 20 74 79 70 65 73 2e 0d 0a 20 20  et of types...  
f500: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
f510: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
f520: 20 6e 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20   name="typ">The 
f530: 74 79 70 65 20 74 6f 20 65 76 61 6c 75 61 74 65  type to evaluate
f540: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
f550: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66  / <param name="f
f560: 6c 61 67 73 22 3e 54 68 65 20 66 6c 61 67 73 20  lags">The flags 
f570: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
f580: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 3c  the connection.<
f590: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
f5a0: 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20 53 51   <returns>The SQ
f5b0: 4c 69 74 65 20 74 79 70 65 20 61 66 66 69 6e 69  Lite type affini
f5c0: 74 79 20 66 6f 72 20 74 68 61 74 20 74 79 70 65  ty for that type
f5d0: 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20  .</returns>..   
f5e0: 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63   internal static
f5f0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 54 79   TypeAffinity Ty
f600: 70 65 54 6f 41 66 66 69 6e 69 74 79 28 0d 0a 20  peToAffinity(.. 
f610: 20 20 20 20 20 20 20 54 79 70 65 20 74 79 70 2c         Type typ,
f620: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
f630: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20  ConnectionFlags 
f640: 66 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29  flags..        )
f650: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 54  ..    {..      T
f660: 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 79 70  ypeCode tc = Typ
f670: 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 74 79  e.GetTypeCode(ty
f680: 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 28 74  p);..      if (t
f690: 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e 4f 62  c == TypeCode.Ob
f6a0: 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a  ject)..      {..
f6b0: 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 20          if (typ 
f6c0: 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d  == typeof(byte[]
f6d0: 29 20 7c 7c 20 74 79 70 20 3d 3d 20 74 79 70 65  ) || typ == type
f6e0: 6f 66 28 47 75 69 64 29 29 0d 0a 20 20 20 20 20  of(Guid))..     
f6f0: 20 20 20 20 20 72 65 74 75 72 6e 20 54 79 70 65       return Type
f700: 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 3b 0d 0a  Affinity.Blob;..
f710: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
f720: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
f730: 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74  ypeAffinity.Text
f740: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
f750: 20 20 69 66 20 28 28 74 63 20 3d 3d 20 54 79 70    if ((tc == Typ
f760: 65 43 6f 64 65 2e 44 65 63 69 6d 61 6c 29 20 26  eCode.Decimal) &
f770: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 48 65 6c  &..          Hel
f780: 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
f790: 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
f7a0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
f7b0: 2e 47 65 74 44 65 63 69 6d 61 6c 41 73 54 65 78  .GetDecimalAsTex
f7c0: 74 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20  t))..      {..  
f7d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54          return T
f7e0: 79 70 65 41 66 66 69 6e 69 74 79 2e 54 65 78 74  ypeAffinity.Text
f7f0: 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  ;..      }..    
f800: 20 20 72 65 74 75 72 6e 20 5f 74 79 70 65 63 6f    return _typeco
f810: 64 65 41 66 66 69 6e 69 74 69 65 73 5b 28 69 6e  deAffinities[(in
f820: 74 29 74 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  t)tc];..    }...
f830: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61  .    private sta
f840: 74 69 63 20 54 79 70 65 41 66 66 69 6e 69 74 79  tic TypeAffinity
f850: 5b 5d 20 5f 74 79 70 65 63 6f 64 65 41 66 66 69  [] _typecodeAffi
f860: 6e 69 74 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20  nities = {..    
f870: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e    TypeAffinity.N
f880: 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 45 6d 70 74  ull,     // Empt
f890: 79 20 28 30 29 0d 0a 20 20 20 20 20 20 54 79 70  y (0)..      Typ
f8a0: 65 41 66 66 69 6e 69 74 79 2e 42 6c 6f 62 2c 20  eAffinity.Blob, 
f8b0: 20 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31      // Object (1
f8c0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
f8d0: 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20  inity.Null,     
f8e0: 2f 2f 20 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20  // DBNull (2).. 
f8f0: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74       TypeAffinit
f900: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42  y.Int64,    // B
f910: 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20  oolean (3)..    
f920: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49    TypeAffinity.I
f930: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 43 68 61 72  nt64,    // Char
f940: 20 28 34 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (4)..      Type
f950: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f960: 20 20 20 2f 2f 20 53 42 79 74 65 20 28 35 29 0d     // SByte (5).
f970: 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e  .      TypeAffin
f980: 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f  ity.Int64,    //
f990: 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 20 20   Byte (6)..     
f9a0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e   TypeAffinity.In
f9b0: 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36  t64,    // Int16
f9c0: 20 28 37 29 0d 0a 20 20 20 20 20 20 54 79 70 65   (7)..      Type
f9d0: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
f9e0: 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 38 29     // UInt16 (8)
f9f0: 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 69  ..      TypeAffi
fa00: 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f  nity.Int64,    /
fa10: 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20  / Int32 (9)..   
fa20: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
fa30: 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e  Int64,    // UIn
fa40: 74 33 32 20 28 31 30 29 0d 0a 20 20 20 20 20 20  t32 (10)..      
fa50: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74  TypeAffinity.Int
fa60: 36 34 2c 20 20 20 20 2f 2f 20 49 6e 74 36 34 20  64,    // Int64 
fa70: 28 31 31 29 0d 0a 20 20 20 20 20 20 54 79 70 65  (11)..      Type
fa80: 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20  Affinity.Int64, 
fa90: 20 20 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32     // UInt64 (12
faa0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
fab0: 69 6e 69 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20  inity.Double,   
fac0: 2f 2f 20 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a  // Single (13)..
fad0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69        TypeAffini
fae0: 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20  ty.Double,   // 
faf0: 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 20 20  Double (14)..   
fb00: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e     TypeAffinity.
fb10: 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 65 63  Double,   // Dec
fb20: 69 6d 61 6c 20 28 31 35 29 0d 0a 20 20 20 20 20  imal (15)..     
fb30: 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 61   TypeAffinity.Da
fb40: 74 65 54 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54  teTime, // DateT
fb50: 69 6d 65 20 28 31 36 29 0d 0a 20 20 20 20 20 20  ime (16)..      
fb60: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c  TypeAffinity.Nul
fb70: 6c 2c 20 20 20 20 20 2f 2f 20 3f 3f 20 28 31 37  l,     // ?? (17
fb80: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  )..      TypeAff
fb90: 69 6e 69 74 79 2e 54 65 78 74 20 20 20 20 20 20  inity.Text      
fba0: 2f 2f 20 53 74 72 69 6e 67 20 28 31 38 29 0d 0a  // String (18)..
fbb0: 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f      };....    //
fbc0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
fbd0: 20 2f 2f 2f 20 42 75 69 6c 64 73 20 61 6e 64 20   /// Builds and 
fbe0: 72 65 74 75 72 6e 73 20 61 20 6d 61 70 20 63 6f  returns a map co
fbf0: 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74  ntaining the dat
fc00: 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70  abase column typ
fc10: 65 73 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 63 6f  es..    /// reco
fc20: 67 6e 69 7a 65 64 20 62 79 20 74 68 69 73 20 70  gnized by this p
fc30: 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f  rovider...    //
fc40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
fc50: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
fc60: 0a 20 20 20 20 2f 2f 2f 20 41 20 6d 61 70 20 63  .    /// A map c
fc70: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61  ontaining the da
fc80: 74 61 62 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79  tabase column ty
fc90: 70 65 73 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  pes recognized b
fca0: 79 20 74 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20  y this..    /// 
fcb0: 70 72 6f 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f  provider...    /
fcc0: 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
fcd0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
fce0: 63 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  c SQLiteDbTypeMa
fcf0: 70 20 47 65 74 53 51 4c 69 74 65 44 62 54 79 70  p GetSQLiteDbTyp
fd00: 65 4d 61 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20  eMap()..    {.. 
fd10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
fd20: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
fd30: 70 28 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79  p(new SQLiteDbTy
fd40: 70 65 4d 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a 20  peMapping[] {.. 
fd50: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
fd60: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
fd70: 6e 67 28 22 42 49 47 49 4e 54 22 2c 20 44 62 54  ng("BIGINT", DbT
fd80: 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65  ype.Int64, false
fd90: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fda0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fdb0: 4d 61 70 70 69 6e 67 28 22 42 49 47 55 49 4e 54  Mapping("BIGUINT
fdc0: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34  ", DbType.UInt64
fdd0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
fde0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
fdf0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
fe00: 42 49 4e 41 52 59 22 2c 20 44 62 54 79 70 65 2e  BINARY", DbType.
fe10: 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d  Binary, false),.
fe20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
fe30: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
fe40: 70 69 6e 67 28 22 42 49 54 22 2c 20 44 62 54 79  ping("BIT", DbTy
fe50: 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 74 72 75 65  pe.Boolean, true
fe60: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
fe70: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
fe80: 4d 61 70 70 69 6e 67 28 22 42 4c 4f 42 22 2c 20  Mapping("BLOB", 
fe90: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 74  DbType.Binary, t
fea0: 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
feb0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
fec0: 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c  ypeMapping("BOOL
fed0: 22 2c 20 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61  ", DbType.Boolea
fee0: 6e 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  n, false),..    
fef0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
ff00: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
ff10: 22 42 4f 4f 4c 45 41 4e 22 2c 20 44 62 54 79 70  "BOOLEAN", DbTyp
ff20: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65  e.Boolean, false
ff30: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
ff40: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
ff50: 4d 61 70 70 69 6e 67 28 22 43 48 41 52 22 2c 20  Mapping("CHAR", 
ff60: 44 62 54 79 70 65 2e 41 6e 73 69 53 74 72 69 6e  DbType.AnsiStrin
ff70: 67 46 69 78 65 64 4c 65 6e 67 74 68 2c 20 74 72  gFixedLength, tr
ff80: 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
ff90: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
ffa0: 70 65 4d 61 70 70 69 6e 67 28 22 43 4c 4f 42 22  peMapping("CLOB"
ffb0: 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
ffc0: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
ffd0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
ffe0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43  DbTypeMapping("C
fff0: 4f 55 4e 54 45 52 22 2c 20 44 62 54 79 70 65 2e  OUNTER", DbType.
10000 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a  Int64, false),..
10010 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10020 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10030 69 6e 67 28 22 43 55 52 52 45 4e 43 59 22 2c 20  ing("CURRENCY", 
10040 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20  DbType.Decimal, 
10050 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10060 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10070 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41  bTypeMapping("DA
10080 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65  TE", DbType.Date
10090 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Time, false),.. 
100a0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
100b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
100c0 6e 67 28 22 44 41 54 45 54 49 4d 45 22 2c 20 44  ng("DATETIME", D
100d0 62 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20  bType.DateTime, 
100e0 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
100f0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10100 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 45 43  TypeMapping("DEC
10110 49 4d 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 65  IMAL", DbType.De
10120 63 69 6d 61 6c 2c 20 74 72 75 65 29 2c 0d 0a 20  cimal, true),.. 
10130 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
10140 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10150 6e 67 28 22 44 45 43 49 4d 41 4c 54 45 58 54 22  ng("DECIMALTEXT"
10160 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c  , DbType.Decimal
10170 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10180 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10190 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
101a0 44 4f 55 42 4c 45 22 2c 20 44 62 54 79 70 65 2e  DOUBLE", DbType.
101b0 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d  Double, false),.
101c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
101d0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
101e0 70 69 6e 67 28 22 46 4c 4f 41 54 22 2c 20 44 62  ping("FLOAT", Db
101f0 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c  Type.Double, fal
10200 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10210 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10220 70 65 4d 61 70 70 69 6e 67 28 22 47 45 4e 45 52  peMapping("GENER
10230 41 4c 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  AL", DbType.Bina
10240 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
10250 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10260 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10270 28 22 47 55 49 44 22 2c 20 44 62 54 79 70 65 2e  ("GUID", DbType.
10280 47 75 69 64 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Guid, false),.. 
10290 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
102a0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
102b0 6e 67 28 22 49 44 45 4e 54 49 54 59 22 2c 20 44  ng("IDENTITY", D
102c0 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c  bType.Int64, fal
102d0 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
102e0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
102f0 70 65 4d 61 70 70 69 6e 67 28 22 49 4d 41 47 45  peMapping("IMAGE
10300 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79  ", DbType.Binary
10310 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10320 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10330 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10340 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49 6e 74  INT", DbType.Int
10350 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20  32, true),..    
10360 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10370 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10380 22 49 4e 54 38 22 2c 20 44 62 54 79 70 65 2e 53  "INT8", DbType.S
10390 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  Byte, false),.. 
103a0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
103b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
103c0 6e 67 28 22 49 4e 54 31 36 22 2c 20 44 62 54 79  ng("INT16", DbTy
103d0 70 65 2e 49 6e 74 31 36 2c 20 66 61 6c 73 65 29  pe.Int16, false)
103e0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
103f0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10400 61 70 70 69 6e 67 28 22 49 4e 54 33 32 22 2c 20  apping("INT32", 
10410 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
10420 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10430 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10440 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 36  ypeMapping("INT6
10450 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34  4", DbType.Int64
10460 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20  , false),..     
10470 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10480 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10490 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79 70 65  INTEGER", DbType
104a0 2e 49 6e 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a  .Int64, true),..
104b0 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
104c0 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
104d0 69 6e 67 28 22 49 4e 54 45 47 45 52 38 22 2c 20  ing("INTEGER8", 
104e0 44 62 54 79 70 65 2e 53 42 79 74 65 2c 20 66 61  DbType.SByte, fa
104f0 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10500 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10510 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
10520 47 45 52 31 36 22 2c 20 44 62 54 79 70 65 2e 49  GER16", DbType.I
10530 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt16, false),.. 
10540 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
10550 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
10560 6e 67 28 22 49 4e 54 45 47 45 52 33 32 22 2c 20  ng("INTEGER32", 
10570 44 62 54 79 70 65 2e 49 6e 74 33 32 2c 20 66 61  DbType.Int32, fa
10580 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10590 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
105a0 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 45  ypeMapping("INTE
105b0 47 45 52 36 34 22 2c 20 44 62 54 79 70 65 2e 49  GER64", DbType.I
105c0 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  nt64, false),.. 
105d0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
105e0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
105f0 6e 67 28 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62  ng("LOGICAL", Db
10600 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61  Type.Boolean, fa
10610 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10620 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10630 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47  ypeMapping("LONG
10640 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c  ", DbType.Int64,
10650 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
10660 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10670 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
10680 4f 4e 47 43 48 41 52 22 2c 20 44 62 54 79 70 65  ONGCHAR", DbType
10690 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
106a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
106b0 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
106c0 70 70 69 6e 67 28 22 4c 4f 4e 47 54 45 58 54 22  pping("LONGTEXT"
106d0 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
106e0 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20   false),..      
106f0 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65        new SQLite
10700 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4c  DbTypeMapping("L
10710 4f 4e 47 56 41 52 43 48 41 52 22 2c 20 44 62 54  ONGVARCHAR", DbT
10720 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73  ype.String, fals
10730 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10740 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10750 65 4d 61 70 70 69 6e 67 28 22 4d 45 4d 4f 22 2c  eMapping("MEMO",
10760 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20   DbType.String, 
10770 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20  false),..       
10780 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
10790 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4d 4f  bTypeMapping("MO
107a0 4e 45 59 22 2c 20 44 62 54 79 70 65 2e 44 65 63  NEY", DbType.Dec
107b0 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20  imal, false),.. 
107c0 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53             new S
107d0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69  QLiteDbTypeMappi
107e0 6e 67 28 22 4e 43 48 41 52 22 2c 20 44 62 54 79  ng("NCHAR", DbTy
107f0 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c 65  pe.StringFixedLe
10800 6e 67 74 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20  ngth, true),..  
10810 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10820 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10830 67 28 22 4e 4f 54 45 22 2c 20 44 62 54 79 70 65  g("NOTE", DbType
10840 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c  .String, false),
10850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10860 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10870 70 70 69 6e 67 28 22 4e 54 45 58 54 22 2c 20 44  pping("NTEXT", D
10880 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61  bType.String, fa
10890 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
108a0 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
108b0 79 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 42  ypeMapping("NUMB
108c0 45 52 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69  ER", DbType.Deci
108d0 6d 61 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20  mal, false),..  
108e0 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
108f0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10900 67 28 22 4e 55 4d 45 52 49 43 22 2c 20 44 62 54  g("NUMERIC", DbT
10910 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 66 61 6c  ype.Decimal, fal
10920 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10930 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10940 70 65 4d 61 70 70 69 6e 67 28 22 4e 55 4d 45 52  peMapping("NUMER
10950 49 43 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e  ICTEXT", DbType.
10960 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c  Decimal, false),
10970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10980 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10990 70 70 69 6e 67 28 22 4e 56 41 52 43 48 41 52 22  pping("NVARCHAR"
109a0 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 2c  , DbType.String,
109b0 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20   true),..       
109c0 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44       new SQLiteD
109d0 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 4f 4c  bTypeMapping("OL
109e0 45 4f 42 4a 45 43 54 22 2c 20 44 62 54 79 70 65  EOBJECT", DbType
109f0 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 29 2c  .Binary, false),
10a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
10a10 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
10a20 70 70 69 6e 67 28 22 52 41 57 22 2c 20 44 62 54  pping("RAW", DbT
10a30 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73  ype.Binary, fals
10a40 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10a50 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10a60 65 4d 61 70 70 69 6e 67 28 22 52 45 41 4c 22 2c  eMapping("REAL",
10a70 20 44 62 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20   DbType.Double, 
10a80 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  true),..        
10a90 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10aa0 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 49 4e  TypeMapping("SIN
10ab0 47 4c 45 22 2c 20 44 62 54 79 70 65 2e 53 69 6e  GLE", DbType.Sin
10ac0 67 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20  gle, true),..   
10ad0 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10ae0 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10af0 28 22 53 4d 41 4c 4c 44 41 54 45 22 2c 20 44 62  ("SMALLDATE", Db
10b00 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66  Type.DateTime, f
10b10 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10b20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10b30 54 79 70 65 4d 61 70 70 69 6e 67 28 22 53 4d 41  TypeMapping("SMA
10b40 4c 4c 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 49  LLINT", DbType.I
10b50 6e 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt16, true),..  
10b60 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10b70 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10b80 67 28 22 53 4d 41 4c 4c 55 49 4e 54 22 2c 20 44  g("SMALLUINT", D
10b90 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 74 72  bType.UInt16, tr
10ba0 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ue),..          
10bb0 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10bc0 70 65 4d 61 70 70 69 6e 67 28 22 53 54 52 49 4e  peMapping("STRIN
10bd0 47 22 2c 20 44 62 54 79 70 65 2e 53 74 72 69 6e  G", DbType.Strin
10be0 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20  g, false),..    
10bf0 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69          new SQLi
10c00 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28  teDbTypeMapping(
10c10 22 54 45 58 54 22 2c 20 44 62 54 79 70 65 2e 53  "TEXT", DbType.S
10c20 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a  tring, false),..
10c30 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20              new 
10c40 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70  SQLiteDbTypeMapp
10c50 69 6e 67 28 22 54 49 4d 45 22 2c 20 44 62 54 79  ing("TIME", DbTy
10c60 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 61 6c  pe.DateTime, fal
10c70 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  se),..          
10c80 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79    new SQLiteDbTy
10c90 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 53  peMapping("TIMES
10ca0 54 41 4d 50 22 2c 20 44 62 54 79 70 65 2e 44 61  TAMP", DbType.Da
10cb0 74 65 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d  teTime, false),.
10cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10cd0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10ce0 70 69 6e 67 28 22 54 49 4e 59 49 4e 54 22 2c 20  ping("TINYINT", 
10cf0 44 62 54 79 70 65 2e 42 79 74 65 2c 20 74 72 75  DbType.Byte, tru
10d00 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10d10 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10d20 65 4d 61 70 70 69 6e 67 28 22 54 49 4e 59 53 49  eMapping("TINYSI
10d30 4e 54 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74  NT", DbType.SByt
10d40 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20  e, true),..     
10d50 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74         new SQLit
10d60 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22  eDbTypeMapping("
10d70 55 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49  UINT", DbType.UI
10d80 6e 74 33 32 2c 20 74 72 75 65 29 2c 0d 0a 20 20  nt32, true),..  
10d90 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51            new SQ
10da0 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
10db0 67 28 22 55 49 4e 54 38 22 2c 20 44 62 54 79 70  g("UINT8", DbTyp
10dc0 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
10dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10de0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10df0 70 69 6e 67 28 22 55 49 4e 54 31 36 22 2c 20 44  ping("UINT16", D
10e00 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 66 61  bType.UInt16, fa
10e10 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  lse),..         
10e20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
10e30 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54  ypeMapping("UINT
10e40 33 32 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74  32", DbType.UInt
10e50 33 32 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  32, false),..   
10e60 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
10e70 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
10e80 28 22 55 49 4e 54 36 34 22 2c 20 44 62 54 79 70  ("UINT64", DbTyp
10e90 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65 29  e.UInt64, false)
10ea0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10eb0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10ec0 61 70 70 69 6e 67 28 22 55 4c 4f 4e 47 22 2c 20  apping("ULONG", 
10ed0 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66  DbType.UInt64, f
10ee0 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20  alse),..        
10ef0 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62      new SQLiteDb
10f00 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 49  TypeMapping("UNI
10f10 51 55 45 49 44 45 4e 54 49 46 49 45 52 22 2c 20  QUEIDENTIFIER", 
10f20 44 62 54 79 70 65 2e 47 75 69 64 2c 20 74 72 75  DbType.Guid, tru
10f30 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
10f40 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70   new SQLiteDbTyp
10f50 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e  eMapping("UNSIGN
10f60 45 44 49 4e 54 45 47 45 52 22 2c 20 44 62 54 79  EDINTEGER", DbTy
10f70 70 65 2e 55 49 6e 74 36 34 2c 20 74 72 75 65 29  pe.UInt64, true)
10f80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
10f90 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
10fa0 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
10fb0 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 79 70  INTEGER8", DbTyp
10fc0 65 2e 42 79 74 65 2c 20 66 61 6c 73 65 29 2c 0d  e.Byte, false),.
10fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77  .            new
10fe0 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
10ff0 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49 4e  ping("UNSIGNEDIN
11000 54 45 47 45 52 31 36 22 2c 20 44 62 54 79 70 65  TEGER16", DbType
11010 2e 55 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c  .UInt16, false),
11020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65  ..            ne
11030 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61  w SQLiteDbTypeMa
11040 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44 49  pping("UNSIGNEDI
11050 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 79 70  NTEGER32", DbTyp
11060 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 29  e.UInt32, false)
11070 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
11080 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
11090 61 70 70 69 6e 67 28 22 55 4e 53 49 47 4e 45 44  apping("UNSIGNED
110a0 49 4e 54 45 47 45 52 36 34 22 2c 20 44 62 54 79  INTEGER64", DbTy
110b0 70 65 2e 55 49 6e 74 36 34 2c 20 66 61 6c 73 65  pe.UInt64, false
110c0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
110d0 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65  new SQLiteDbType
110e0 4d 61 70 70 69 6e 67 28 22 56 41 52 42 49 4e 41  Mapping("VARBINA
110f0 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61  RY", DbType.Bina
11100 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20  ry, false),..   
11110 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c           new SQL
11120 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67  iteDbTypeMapping
11130 28 22 56 41 52 43 48 41 52 22 2c 20 44 62 54 79  ("VARCHAR", DbTy
11140 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 2c 20 74  pe.AnsiString, t
11150 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  rue),..         
11160 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54     new SQLiteDbT
11170 79 70 65 4d 61 70 70 69 6e 67 28 22 56 41 52 43  ypeMapping("VARC
11180 48 41 52 32 22 2c 20 44 62 54 79 70 65 2e 41 6e  HAR2", DbType.An
11190 73 69 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29  siString, false)
111a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e  ,..            n
111b0 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  ew SQLiteDbTypeM
111c0 61 70 70 69 6e 67 28 22 59 45 53 4e 4f 22 2c 20  apping("YESNO", 
111d0 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20  DbType.Boolean, 
111e0 66 61 6c 73 65 29 0d 0a 20 20 20 20 20 20 20 20  false)..        
111f0 7d 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  });..    }....  
11200 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
11210 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69  .    /// Determi
11220 6e 65 73 20 69 66 20 61 20 64 61 74 61 62 61 73  nes if a databas
11230 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
11240 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
11250 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ing...    /// </
11260 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f  summary>..    //
11270 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
11280 79 70 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  ype">..    /// T
11290 68 65 20 64 61 74 61 62 61 73 65 20 74 79 70 65  he database type
112a0 20 74 6f 20 63 68 65 63 6b 2e 0d 0a 20 20 20 20   to check...    
112b0 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20  /// </param>..  
112c0 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d    /// <returns>.
112d0 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72  .    /// Non-zer
112e0 6f 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  o if the databas
112f0 65 20 74 79 70 65 20 69 73 20 63 6f 6e 73 69 64  e type is consid
11300 65 72 65 64 20 74 6f 20 62 65 20 61 20 73 74 72  ered to be a str
11310 69 6e 67 2c 20 7a 65 72 6f 0d 0a 20 20 20 20 2f  ing, zero..    /
11320 2f 2f 20 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20  // otherwise... 
11330 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73     /// </returns
11340 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20  >..    internal 
11350 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 74  static bool IsSt
11360 72 69 6e 67 44 62 54 79 70 65 28 0d 0a 20 20 20  ringDbType(..   
11370 20 20 20 20 20 44 62 54 79 70 65 20 74 79 70 65       DbType type
11380 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
11390 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74   {..        swit
113a0 63 68 20 28 74 79 70 65 29 0d 0a 20 20 20 20 20  ch (type)..     
113b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
113c0 20 20 63 61 73 65 20 44 62 54 79 70 65 2e 41 6e    case DbType.An
113d0 73 69 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20 20  siString:..     
113e0 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54 79         case DbTy
113f0 70 65 2e 53 74 72 69 6e 67 3a 0d 0a 20 20 20 20  pe.String:..    
11400 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
11410 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69  ype.AnsiStringFi
11420 78 65 64 4c 65 6e 67 74 68 3a 0d 0a 20 20 20 20  xedLength:..    
11430 20 20 20 20 20 20 20 20 63 61 73 65 20 44 62 54          case DbT
11440 79 70 65 2e 53 74 72 69 6e 67 46 69 78 65 64 4c  ype.StringFixedL
11450 65 6e 67 74 68 3a 0d 0a 20 20 20 20 20 20 20 20  ength:..        
11460 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
11470 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
11480 20 20 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20    default:..    
11490 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
114a0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
114b0 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20     }..    }.... 
114c0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
114d0 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d  ..    /// Determ
114e0 69 6e 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ines and returns
114f0 20 74 68 65 20 72 75 6e 74 69 6d 65 20 63 6f 6e   the runtime con
11500 66 69 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69  figuration setti
11510 6e 67 20 73 74 72 69 6e 67 20 74 68 61 74 0d 0a  ng string that..
11520 20 20 20 20 2f 2f 2f 20 73 68 6f 75 6c 64 20 62      /// should b
11530 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20  e used in place 
11540 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64  of the specified
11550 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2e 0d 0a   object value...
11560 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
11570 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  y>..    /// <par
11580 61 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e  am name="value">
11590 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 62  ..    /// The ob
115a0 6a 65 63 74 20 76 61 6c 75 65 20 74 6f 20 63 6f  ject value to co
115b0 6e 76 65 72 74 20 74 6f 20 61 20 73 74 72 69 6e  nvert to a strin
115c0 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  g...    /// </pa
115d0 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
115e0 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
115f0 20 45 69 74 68 65 72 20 74 68 65 20 73 74 72 69   Either the stri
11600 6e 67 20 74 6f 20 75 73 65 20 69 6e 20 70 6c 61  ng to use in pla
11610 63 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  ce of the object
11620 20 76 61 6c 75 65 20 2d 4f 52 2d 20 6e 75 6c 6c   value -OR- null
11630 20 69 66 20 69 74 0d 0a 20 20 20 20 2f 2f 2f 20   if it..    /// 
11640 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d  cannot be determ
11650 69 6e 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ined...    /// <
11660 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70  /returns>..    p
11670 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
11680 72 69 6e 67 20 53 65 74 74 69 6e 67 56 61 6c 75  ring SettingValu
11690 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20  eToString(..    
116a0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
116b0 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20  ..        )..   
116c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   {..        if (
116d0 76 61 6c 75 65 20 69 73 20 73 74 72 69 6e 67 29  value is string)
116e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
116f0 74 75 72 6e 20 28 73 74 72 69 6e 67 29 76 61 6c  turn (string)val
11700 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69  ue;....        i
11710 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c  f (value != null
11720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  )..            r
11730 65 74 75 72 6e 20 76 61 6c 75 65 2e 54 6f 53 74  eturn value.ToSt
11740 72 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ring();....     
11750 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11760 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
11770 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
11780 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73 20   /// Determines 
11790 74 68 65 20 64 65 66 61 75 6c 74 20 3c 73 65 65  the default <see
117a0 20 63 72 65 66 3d 22 44 62 54 79 70 65 22 20 2f   cref="DbType" /
117b0 3e 20 76 61 6c 75 65 20 74 6f 20 62 65 20 75 73  > value to be us
117c0 65 64 20 77 68 65 6e 20 61 0d 0a 20 20 20 20 2f  ed when a..    /
117d0 2f 2f 20 70 65 72 2d 63 6f 6e 6e 65 63 74 69 6f  // per-connectio
117e0 6e 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 61  n value is not a
117f0 76 61 69 6c 61 62 6c 65 2e 0d 0a 20 20 20 20 2f  vailable...    /
11800 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
11810 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61     /// <param na
11820 6d 65 3d 22 63 6f 6e 6e 65 63 74 69 6f 6e 22 3e  me="connection">
11830 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f  ..    /// The co
11840 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74  nnection context
11850 20 66 6f 72 20 74 79 70 65 20 6d 61 70 70 69 6e   for type mappin
11860 67 73 2c 20 69 66 20 61 6e 79 2e 0d 0a 20 20 20  gs, if any...   
11870 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20   /// </param>.. 
11880 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
11890 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65  ..    /// The de
118a0 66 61 75 6c 74 20 3c 73 65 65 20 63 72 65 66 3d  fault <see cref=
118b0 22 44 62 54 79 70 65 22 20 2f 3e 20 76 61 6c 75  "DbType" /> valu
118c0 65 20 74 6f 20 75 73 65 2e 0d 0a 20 20 20 20 2f  e to use...    /
118d0 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20  // </returns>.. 
118e0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
118f0 63 20 44 62 54 79 70 65 20 47 65 74 44 65 66 61  c DbType GetDefa
11900 75 6c 74 44 62 54 79 70 65 28 0d 0a 20 20 20 20  ultDbType(..    
11910 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
11920 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d  tion connection.
11930 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20  .        )..    
11940 7b 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  {..        SQLit
11950 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
11960 20 66 6c 61 67 73 20 3d 20 28 63 6f 6e 6e 65 63   flags = (connec
11970 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  tion != null) ?.
11980 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e  .            con
11990 6e 65 63 74 69 6f 6e 2e 46 6c 61 67 73 20 3a 20  nection.Flags : 
119a0 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
119b0 46 6c 61 67 73 2e 4e 6f 6e 65 3b 0d 0a 0d 0a 20  Flags.None;.... 
119c0 20 20 20 20 20 20 20 69 66 20 28 48 65 6c 70 65         if (Helpe
119d0 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c 61 67  rMethods.HasFlag
119e0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
119f0 20 20 20 20 66 6c 61 67 73 2c 20 53 51 4c 69 74      flags, SQLit
11a00 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
11a10 2e 4e 6f 43 6f 6e 76 65 72 74 53 65 74 74 69 6e  .NoConvertSettin
11a20 67 73 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  gs))..        {.
11a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
11a40 75 72 6e 20 46 61 6c 6c 62 61 63 6b 44 65 66 61  urn FallbackDefa
11a50 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20 20 20  ultDbType;..    
11a60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11a70 20 62 6f 6f 6c 20 66 6f 75 6e 64 20 3d 20 66 61   bool found = fa
11a80 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 73 74  lse;..        st
11a90 72 69 6e 67 20 6e 61 6d 65 20 3d 20 22 55 73 65  ring name = "Use
11aa0 5f 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 5f 44  _SQLiteConvert_D
11ab0 65 66 61 75 6c 74 44 62 54 79 70 65 22 3b 0d 0a  efaultDbType";..
11ac0 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
11ad0 61 6c 75 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  alue = null;..  
11ae0 20 20 20 20 20 20 73 74 72 69 6e 67 20 40 64 65        string @de
11af0 66 61 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d  fault = null;...
11b00 0a 20 20 20 20 20 20 20 20 69 66 20 28 28 63 6f  .        if ((co
11b10 6e 6e 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  nnection == null
11b20 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
11b30 20 20 21 63 6f 6e 6e 65 63 74 69 6f 6e 2e 54 72    !connection.Tr
11b40 79 47 65 74 43 61 63 68 65 64 53 65 74 74 69 6e  yGetCachedSettin
11b50 67 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  g(name, @default
11b60 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
11b70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11b80 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 55 6e        value = Un
11b90 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64  safeNativeMethod
11ba0 73 2e 47 65 74 53 65 74 74 69 6e 67 56 61 6c 75  s.GetSettingValu
11bb0 65 28 6e 61 6d 65 2c 20 40 64 65 66 61 75 6c 74  e(name, @default
11bc0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
11bd0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
11be0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
11bf0 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 46 61        value = Fa
11c00 6c 6c 62 61 63 6b 44 65 66 61 75 6c 74 44 62 54  llbackDefaultDbT
11c10 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ype;..        }.
11c20 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20  .        else.. 
11c30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11c40 20 20 20 20 20 20 66 6f 75 6e 64 20 3d 20 74 72        found = tr
11c50 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ue;..        }..
11c60 0d 0a 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20  ..        try.. 
11c70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
11c80 20 20 20 20 20 20 69 66 20 28 21 28 76 61 6c 75        if (!(valu
11c90 65 20 69 73 20 44 62 54 79 70 65 29 29 0d 0a 20  e is DbType)).. 
11ca0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
11cc0 6c 75 65 20 3d 20 53 51 4c 69 74 65 43 6f 6e 6e  lue = SQLiteConn
11cd0 65 63 74 69 6f 6e 2e 54 72 79 50 61 72 73 65 45  ection.TryParseE
11ce0 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  num(..          
11cf0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
11d00 28 44 62 54 79 70 65 29 2c 20 53 65 74 74 69 6e  (DbType), Settin
11d10 67 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 76  gValueToString(v
11d20 61 6c 75 65 29 2c 20 74 72 75 65 29 3b 0d 0a 0d  alue), true);...
11d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11d40 20 69 66 20 28 21 28 76 61 6c 75 65 20 69 73 20   if (!(value is 
11d50 44 62 54 79 70 65 29 29 0d 0a 20 20 20 20 20 20  DbType))..      
11d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
11d70 6c 75 65 20 3d 20 46 61 6c 6c 62 61 63 6b 44 65  lue = FallbackDe
11d80 66 61 75 6c 74 44 62 54 79 70 65 3b 0d 0a 20 20  faultDbType;..  
11d90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11da0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11db0 6e 20 28 44 62 54 79 70 65 29 76 61 6c 75 65 3b  n (DbType)value;
11dc0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
11dd0 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20       finally..  
11de0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11df0 20 20 20 20 20 69 66 20 28 21 66 6f 75 6e 64 20       if (!found 
11e00 26 26 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 20 21  && (connection !
11e10 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
11e20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
11e30 74 69 6f 6e 2e 53 65 74 43 61 63 68 65 64 53 65  tion.SetCachedSe
11e40 74 74 69 6e 67 28 6e 61 6d 65 2c 20 76 61 6c 75  tting(name, valu
11e50 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
11e60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
11e70 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
11e80 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 74 68 65  /// Converts the
11e90 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 2c 20 77   object value, w
11ea0 68 69 63 68 20 69 73 20 61 73 73 75 6d 65 64 20  hich is assumed 
11eb0 74 6f 20 68 61 76 65 20 6f 72 69 67 69 6e 61 74  to have originat
11ec0 65 64 0d 0a 20 20 20 20 2f 2f 2f 20 66 72 6f 6d  ed..    /// from
11ed0 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 61   a <see cref="Da
11ee0 74 61 52 6f 77 22 20 2f 3e 2c 20 74 6f 20 61 20  taRow" />, to a 
11ef0 73 74 72 69 6e 67 20 76 61 6c 75 65 2e 0d 0a 20  string value... 
11f00 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
11f10 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
11f20 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 0d  m name="value">.
11f30 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c  .    /// The val
11f40 75 65 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74  ue to be convert
11f50 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d  ed to a string..
11f60 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
11f70 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75  >..    /// <retu
11f80 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 20  rns>..    /// A 
11f90 6e 75 6c 6c 20 76 61 6c 75 65 20 77 69 6c 6c 20  null value will 
11fa0 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  be returned if t
11fb0 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75  he original valu
11fc0 65 20 69 73 20 6e 75 6c 6c 20 2d 4f 52 2d 0d 0a  e is null -OR-..
11fd0 20 20 20 20 2f 2f 2f 20 74 68 65 20 6f 72 69 67      /// the orig
11fe0 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 3c 73  inal value is <s
11ff0 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 2e  ee cref="DBNull.
12000 56 61 6c 75 65 22 20 2f 3e 2e 20 20 4f 74 68 65  Value" />.  Othe
12010 72 77 69 73 65 2c 0d 0a 20 20 20 20 2f 2f 2f 20  rwise,..    /// 
12020 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c  the original val
12030 75 65 20 77 69 6c 6c 20 62 65 20 63 6f 6e 76 65  ue will be conve
12040 72 74 65 64 20 74 6f 20 61 20 73 74 72 69 6e 67  rted to a string
12050 2c 20 75 73 69 6e 67 20 69 74 73 0d 0a 20 20 20  , using its..   
12060 20 2f 2f 2f 20 28 70 6f 73 73 69 62 6c 79 20 6f   /// (possibly o
12070 76 65 72 72 69 64 64 65 6e 29 20 3c 73 65 65 20  verridden) <see 
12080 63 72 65 66 3d 22 4f 62 6a 65 63 74 2e 54 6f 53  cref="Object.ToS
12090 74 72 69 6e 67 22 20 2f 3e 20 6d 65 74 68 6f 64  tring" /> method
120a0 20 61 6e 64 0d 0a 20 20 20 20 2f 2f 2f 20 74 68   and..    /// th
120b0 65 6e 20 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20  en returned...  
120c0 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e    /// </returns>
120d0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61  ..    public sta
120e0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 74  tic string GetSt
120f0 72 69 6e 67 4f 72 4e 75 6c 6c 28 0d 0a 20 20 20  ringOrNull(..   
12100 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
12110 65 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20  e..        )..  
12120 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20    {..        if 
12130 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
12140 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
12150 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
12160 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 69       if (value i
12170 73 20 73 74 72 69 6e 67 29 0d 0a 20 20 20 20 20  s string)..     
12180 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 73         return (s
12190 74 72 69 6e 67 29 76 61 6c 75 65 3b 0d 0a 0d 0a  tring)value;....
121a0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
121b0 65 20 3d 3d 20 44 42 4e 75 6c 6c 2e 56 61 6c 75  e == DBNull.Valu
121c0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
121d0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
121e0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
121f0 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
12200 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
12210 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
12220 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 73    /// Determines
12230 20 69 66 20 74 68 65 20 73 70 65 63 69 66 69 65   if the specifie
12240 64 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  d textual value 
12250 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 61 0d  appears to be a.
12260 0a 20 20 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72  .    /// <see cr
12270 65 66 3d 22 44 42 4e 75 6c 6c 22 20 2f 3e 20 76  ef="DBNull" /> v
12280 61 6c 75 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  alue...    /// <
12290 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
122a0 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22  // <param name="
122b0 74 65 78 74 22 3e 0d 0a 20 20 20 20 2f 2f 2f 20  text">..    /// 
122c0 54 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75  The textual valu
122d0 65 20 74 6f 20 69 6e 73 70 65 63 74 2e 0d 0a 20  e to inspect... 
122e0 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d     /// </param>.
122f0 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e  .    /// <return
12300 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e 6f 6e 2d  s>..    /// Non-
12310 7a 65 72 6f 20 69 66 20 74 68 65 20 74 65 78 74  zero if the text
12320 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 3c 73   looks like a <s
12330 65 65 20 63 72 65 66 3d 22 44 42 4e 75 6c 6c 22  ee cref="DBNull"
12340 20 2f 3e 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20   /> value,..    
12350 2f 2f 2f 20 7a 65 72 6f 20 6f 74 68 65 72 77 69  /// zero otherwi
12360 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72  se...    /// </r
12370 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74  eturns>..    int
12380 65 72 6e 61 6c 20 73 74 61 74 69 63 20 62 6f 6f  ernal static boo
12390 6c 20 4c 6f 6f 6b 73 4c 69 6b 65 4e 75 6c 6c 28  l LooksLikeNull(
123a0 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
123b0 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 29   text..        )
123c0 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
123d0 20 72 65 74 75 72 6e 20 28 74 65 78 74 20 3d 3d   return (text ==
123e0 20 6e 75 6c 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a   null);..    }..
123f0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
12400 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74  ry>..    /// Det
12410 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73  ermines if the s
12420 70 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c  pecified textual
12430 20 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74   value appears t
12440 6f 20 62 65 20 61 6e 0d 0a 20 20 20 20 2f 2f 2f  o be an..    ///
12450 20 3c 73 65 65 20 63 72 65 66 3d 22 49 6e 74 36   <see cref="Int6
12460 34 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20  4" /> value...  
12470 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
12480 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
12490 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20   name="text">.. 
124a0 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75     /// The textu
124b0 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70  al value to insp
124c0 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ect...    /// </
124d0 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20  param>..    /// 
124e0 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f  <returns>..    /
124f0 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74  // Non-zero if t
12500 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69  he text looks li
12510 6b 65 20 61 6e 20 3c 73 65 65 20 63 72 65 66 3d  ke an <see cref=
12520 22 49 6e 74 36 34 22 20 2f 3e 20 76 61 6c 75 65  "Int64" /> value
12530 2c 0d 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20  ,..    /// zero 
12540 6f 74 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20  otherwise...    
12550 2f 2f 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  /// </returns>..
12560 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61      internal sta
12570 74 69 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69  tic bool LooksLi
12580 6b 65 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20  keInt64(..      
12590 20 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20    string text.. 
125a0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d         )..    {.
125b0 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67 20 6c 6f  .        long lo
125c0 6e 67 56 61 6c 75 65 3b 0d 0a 0d 0a 23 69 66 20  ngValue;....#if 
125d0 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d 50 41 43  !PLATFORM_COMPAC
125e0 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20 20 20 20  TFRAMEWORK..    
125f0 20 20 20 20 69 66 20 28 21 6c 6f 6e 67 2e 54 72      if (!long.Tr
12600 79 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20  yParse(..       
12610 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 4e           text, N
12620 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74 65  umberStyles.Inte
12630 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ger, CultureInfo
12640 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
12650 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
12660 20 20 20 20 6f 75 74 20 6c 6f 6e 67 56 61 6c 75      out longValu
12670 65 29 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  e))..        {..
12680 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12690 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
126a0 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20     }..#else..   
126b0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
126c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
126d0 20 6c 6f 6e 67 56 61 6c 75 65 20 3d 20 6c 6f 6e   longValue = lon
126e0 67 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20  g.Parse(..      
126f0 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20            text, 
12700 4e 75 6d 62 65 72 53 74 79 6c 65 73 2e 49 6e 74  NumberStyles.Int
12710 65 67 65 72 2c 20 43 75 6c 74 75 72 65 49 6e 66  eger, CultureInf
12720 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75  o.InvariantCultu
12730 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  re);..        }.
12740 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a  .        catch..
12750 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12760 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
12770 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  lse;..        }.
12780 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20  .#endif....     
12790 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
127a0 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  .Equals(..      
127b0 20 20 20 20 20 20 6c 6f 6e 67 56 61 6c 75 65 2e        longValue.
127c0 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72 65  ToString(Culture
127d0 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75  Info.InvariantCu
127e0 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a 20  lture), text,.. 
127f0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
12800 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
12810 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  nal);..    }....
12820 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
12830 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72  >..    /// Deter
12840 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70 65  mines if the spe
12850 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20 76  cified textual v
12860 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f 20  alue appears to 
12870 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  be a..    /// <s
12880 65 65 20 63 72 65 66 3d 22 44 6f 75 62 6c 65 22  ee cref="Double"
12890 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20   /> value...    
128a0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
128b0 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e      /// <param n
128c0 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a 20 20 20  ame="text">..   
128d0 20 2f 2f 2f 20 54 68 65 20 74 65 78 74 75 61 6c   /// The textual
128e0 20 76 61 6c 75 65 20 74 6f 20 69 6e 73 70 65 63   value to inspec
128f0 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61  t...    /// </pa
12900 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72  ram>..    /// <r
12910 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 2f 2f 2f  eturns>..    ///
12920 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   Non-zero if the
12930 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65   text looks like
12940 20 61 20 3c 73 65 65 20 63 72 65 66 3d 22 44 6f   a <see cref="Do
12950 75 62 6c 65 22 20 2f 3e 20 76 61 6c 75 65 2c 0d  uble" /> value,.
12960 0a 20 20 20 20 2f 2f 2f 20 7a 65 72 6f 20 6f 74  .    /// zero ot
12970 68 65 72 77 69 73 65 2e 0d 0a 20 20 20 20 2f 2f  herwise...    //
12980 2f 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  / </returns>..  
12990 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
129a0 63 20 62 6f 6f 6c 20 4c 6f 6f 6b 73 4c 69 6b 65  c bool LooksLike
129b0 44 6f 75 62 6c 65 28 0d 0a 20 20 20 20 20 20 20  Double(..       
129c0 20 73 74 72 69 6e 67 20 74 65 78 74 0d 0a 20 20   string text..  
129d0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
129e0 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 64          double d
129f0 6f 75 62 6c 65 56 61 6c 75 65 3b 0d 0a 0d 0a 23  oubleValue;....#
12a00 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f 43 4f 4d  if !PLATFORM_COM
12a10 50 41 43 54 46 52 41 4d 45 57 4f 52 4b 0d 0a 20  PACTFRAMEWORK.. 
12a20 20 20 20 20 20 20 20 69 66 20 28 21 64 6f 75 62         if (!doub
12a30 6c 65 2e 54 72 79 50 61 72 73 65 28 0d 0a 20 20  le.TryParse(..  
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65                te
12a50 78 74 2c 20 4e 75 6d 62 65 72 53 74 79 6c 65 73  xt, NumberStyles
12a60 2e 46 6c 6f 61 74 20 7c 20 4e 75 6d 62 65 72 53  .Float | NumberS
12a70 74 79 6c 65 73 2e 41 6c 6c 6f 77 54 68 6f 75 73  tyles.AllowThous
12a80 61 6e 64 73 2c 0d 0a 20 20 20 20 20 20 20 20 20  ands,..         
12a90 20 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e         CultureIn
12aa0 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74  fo.InvariantCult
12ab0 75 72 65 2c 20 6f 75 74 20 64 6f 75 62 6c 65 56  ure, out doubleV
12ac0 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alue))..        
12ad0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  {..            r
12ae0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
12af0 20 20 20 20 20 20 7d 0d 0a 23 65 6c 73 65 0d 0a        }..#else..
12b00 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
12b10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12b20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65 20      doubleValue 
12b30 3d 20 64 6f 75 62 6c 65 2e 50 61 72 73 65 28 74  = double.Parse(t
12b40 65 78 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f  ext, CultureInfo
12b50 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72  .InvariantCultur
12b60 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
12b70 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20          catch.. 
12b80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
12b90 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
12ba0 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  se;..        }..
12bb0 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20  #endif....      
12bc0 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
12bd0 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
12be0 20 20 20 20 20 64 6f 75 62 6c 65 56 61 6c 75 65       doubleValue
12bf0 2e 54 6f 53 74 72 69 6e 67 28 43 75 6c 74 75 72  .ToString(Cultur
12c00 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43  eInfo.InvariantC
12c10 75 6c 74 75 72 65 29 2c 20 74 65 78 74 2c 0d 0a  ulture), text,..
12c20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
12c30 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64  ngComparison.Ord
12c40 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  inal);..    }...
12c50 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
12c60 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65  y>..    /// Dete
12c70 72 6d 69 6e 65 73 20 69 66 20 74 68 65 20 73 70  rmines if the sp
12c80 65 63 69 66 69 65 64 20 74 65 78 74 75 61 6c 20  ecified textual 
12c90 76 61 6c 75 65 20 61 70 70 65 61 72 73 20 74 6f  value appears to
12ca0 20 62 65 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 3c   be a..    /// <
12cb0 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54 69  see cref="DateTi
12cc0 6d 65 22 20 2f 3e 20 76 61 6c 75 65 2e 0d 0a 20  me" /> value... 
12cd0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
12ce0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
12cf0 6d 20 6e 61 6d 65 3d 22 63 6f 6e 76 65 72 74 22  m name="convert"
12d00 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 3c  >..    /// The <
12d10 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
12d20 43 6f 6e 76 65 72 74 22 20 2f 3e 20 6f 62 6a 65  Convert" /> obje
12d30 63 74 20 69 6e 73 74 61 6e 63 65 20 63 6f 6e 66  ct instance conf
12d40 69 67 75 72 65 64 20 77 69 74 68 0d 0a 20 20 20  igured with..   
12d50 20 2f 2f 2f 20 74 68 65 20 63 68 6f 73 65 6e 20   /// the chosen 
12d60 3c 73 65 65 20 63 72 65 66 3d 22 44 61 74 65 54  <see cref="DateT
12d70 69 6d 65 22 20 2f 3e 20 66 6f 72 6d 61 74 2e 0d  ime" /> format..
12d80 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 6d  .    /// </param
12d90 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61  >..    /// <para
12da0 6d 20 6e 61 6d 65 3d 22 74 65 78 74 22 3e 0d 0a  m name="text">..
12db0 20 20 20 20 2f 2f 2f 20 54 68 65 20 74 65 78 74      /// The text
12dc0 75 61 6c 20 76 61 6c 75 65 20 74 6f 20 69 6e 73  ual value to ins
12dd0 70 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  pect...    /// <
12de0 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f  /param>..    ///
12df0 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20   <returns>..    
12e00 2f 2f 2f 20 4e 6f 6e 2d 7a 65 72 6f 20 69 66 20  /// Non-zero if 
12e10 74 68 65 20 74 65 78 74 20 6c 6f 6f 6b 73 20 6c  the text looks l
12e20 69 6b 65 20 61 20 3c 73 65 65 20 63 72 65 66 3d  ike a <see cref=
12e30 22 44 61 74 65 54 69 6d 65 22 20 2f 3e 20 69 6e  "DateTime" /> in
12e40 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 63 6f   the..    /// co
12e50 6e 66 69 67 75 72 65 64 20 66 6f 72 6d 61 74 2c  nfigured format,
12e60 20 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e   zero otherwise.
12e70 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75  ..    /// </retu
12e80 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e  rns>..    intern
12e90 61 6c 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 4c  al static bool L
12ea0 6f 6f 6b 73 4c 69 6b 65 44 61 74 65 54 69 6d 65  ooksLikeDateTime
12eb0 28 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74  (..        SQLit
12ec0 65 43 6f 6e 76 65 72 74 20 63 6f 6e 76 65 72 74  eConvert convert
12ed0 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  ,..        strin
12ee0 67 20 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20  g text..        
12ef0 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  )..    {..      
12f00 20 20 69 66 20 28 63 6f 6e 76 65 72 74 20 3d 3d    if (convert ==
12f10 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12f20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
12f30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 74 72 79  ;....        try
12f40 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
12f50 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d           DateTim
12f60 65 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 20  e dateTimeValue 
12f70 3d 20 63 6f 6e 76 65 72 74 2e 54 6f 44 61 74 65  = convert.ToDate
12f80 54 69 6d 65 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  Time(text);.... 
12f90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
12fa0 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fc0 20 20 20 63 6f 6e 76 65 72 74 2e 54 6f 53 74 72     convert.ToStr
12fd0 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c 75  ing(dateTimeValu
12fe0 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12ff0 20 20 20 20 20 20 20 20 20 74 65 78 74 2c 20 53           text, S
13000 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
13010 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20  Ordinal))..     
13020 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13030 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
13040 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
13050 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
13060 0d 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 0d  ..        catch.
13070 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
13080 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
13090 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
130a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 72 65 74  }....        ret
130b0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
130c0 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75  }....    /// <su
130d0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
130e0 46 6f 72 20 61 20 67 69 76 65 6e 20 74 65 78 74  For a given text
130f0 75 61 6c 20 64 61 74 61 62 61 73 65 20 74 79 70  ual database typ
13100 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 6e 20 74  e name, return t
13110 68 65 20 22 63 6c 6f 73 65 73 74 2d 6d 61 74 63  he "closest-matc
13120 68 22 20 64 61 74 61 62 61 73 65 20 74 79 70 65  h" database type
13130 2e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20  ...    /// This 
13140 6d 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64  method is called
13150 20 64 75 72 69 6e 67 20 71 75 65 72 79 20 72 65   during query re
13160 73 75 6c 74 20 70 72 6f 63 65 73 73 69 6e 67 3b  sult processing;
13170 20 74 68 65 72 65 66 6f 72 65 2c 20 69 74 73 20   therefore, its 
13180 70 65 72 66 6f 72 6d 61 6e 63 65 0d 0a 20 20 20  performance..   
13190 20 2f 2f 2f 20 69 73 20 63 72 69 74 69 63 61 6c   /// is critical
131a0 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
131b0 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
131c0 70 61 72 61 6d 20 6e 61 6d 65 3d 22 63 6f 6e 6e  param name="conn
131d0 65 63 74 69 6f 6e 22 3e 54 68 65 20 63 6f 6e 6e  ection">The conn
131e0 65 63 74 69 6f 6e 20 63 6f 6e 74 65 78 74 20 66  ection context f
131f0 6f 72 20 63 75 73 74 6f 6d 20 74 79 70 65 20 6d  or custom type m
13200 61 70 70 69 6e 67 73 2c 20 69 66 20 61 6e 79 2e  appings, if any.
13210 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f  </param>..    //
13220 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74  / <param name="t
13230 79 70 65 4e 61 6d 65 22 3e 54 68 65 20 74 65 78  ypeName">The tex
13240 74 75 61 6c 20 6e 61 6d 65 20 6f 66 20 74 68 65  tual name of the
13250 20 64 61 74 61 62 61 73 65 20 74 79 70 65 20 74   database type t
13260 6f 20 6d 61 74 63 68 2e 3c 2f 70 61 72 61 6d 3e  o match.</param>
13270 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d  ..    /// <param
13280 20 6e 61 6d 65 3d 22 66 6c 61 67 73 22 3e 54 68   name="flags">Th
13290 65 20 66 6c 61 67 73 20 61 73 73 6f 63 69 61 74  e flags associat
132a0 65 64 20 77 69 74 68 20 74 68 65 20 70 61 72 65  ed with the pare
132b0 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 62  nt connection ob
132c0 6a 65 63 74 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20  ject.</param>.. 
132d0 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e     /// <returns>
132e0 54 68 65 20 2e 4e 45 54 20 44 42 54 79 70 65 20  The .NET DBType 
132f0 74 68 65 20 74 65 78 74 20 65 76 61 6c 75 61 74  the text evaluat
13300 65 73 20 74 6f 2e 3c 2f 72 65 74 75 72 6e 73 3e  es to.</returns>
13310 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
13320 74 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70  tatic DbType Typ
13330 65 4e 61 6d 65 54 6f 44 62 54 79 70 65 28 0d 0a  eNameToDbType(..
13340 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
13350 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
13360 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 73 74  ion,..        st
13370 72 69 6e 67 20 74 79 70 65 4e 61 6d 65 2c 0d 0a  ring typeName,..
13380 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f          SQLiteCo
13390 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
133a0 61 67 73 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a  ags..        )..
133b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44      {..        D
133c0 62 54 79 70 65 3f 20 64 65 66 61 75 6c 74 44 62  bType? defaultDb
133d0 54 79 70 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Type = null;....
133e0 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 6e          if (conn
133f0 65 63 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c 29 0d  ection != null).
13400 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
13410 20 20 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d          flags |=
13420 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 46 6c 61 67   connection.Flag
13430 73 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  s;....          
13440 20 20 69 66 20 28 48 65 6c 70 65 72 4d 65 74 68    if (HelperMeth
13450 6f 64 73 2e 48 61 73 46 6c 61 67 73 28 66 6c 61  ods.HasFlags(fla
13460 67 73 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  gs, SQLiteConnec
13470 74 69 6f 6e 46 6c 61 67 73 2e 55 73 65 43 6f 6e  tionFlags.UseCon
13480 6e 65 63 74 69 6f 6e 54 79 70 65 73 29 29 0d 0a  nectionTypes))..
13490 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
134a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
134b0 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 63  QLiteDbTypeMap c
134c0 6f 6e 6e 65 63 74 69 6f 6e 54 79 70 65 4e 61 6d  onnectionTypeNam
134d0 65 73 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  es = connection.
134e0 5f 74 79 70 65 4e 61 6d 65 73 3b 0d 0a 0d 0a 20  _typeNames;.... 
134f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13500 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 54 79 70  f (connectionTyp
13510 65 4e 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 0d  eNames != null).
13520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13530 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
13540 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
13550 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
13560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13570 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
13590 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
135a0 67 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20  g value;....    
135b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135c0 20 20 20 20 69 66 20 28 63 6f 6e 6e 65 63 74 69      if (connecti
135d0 6f 6e 54 79 70 65 4e 61 6d 65 73 2e 54 72 79 47  onTypeNames.TryG
135e0 65 74 56 61 6c 75 65 28 74 79 70 65 4e 61 6d 65  etValue(typeName
135f0 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20  , out value)).. 
13600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13610 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13630 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
13640 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20  ue.dataType;..  
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
13670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13680 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
13690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
136a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
136b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
136c0 74 20 69 6e 64 65 78 20 3d 20 74 79 70 65 4e 61  t index = typeNa
136d0 6d 65 2e 49 6e 64 65 78 4f 66 28 27 28 27 29 3b  me.IndexOf('(');
136e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
136f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13700 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20  if ((index > 0) 
13710 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
13720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13730 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 54 79      connectionTy
13740 70 65 4e 61 6d 65 73 2e 54 72 79 47 65 74 56 61  peNames.TryGetVa
13750 6c 75 65 28 74 79 70 65 4e 61 6d 65 2e 53 75 62  lue(typeName.Sub
13760 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29  string(0, index)
13770 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20  .TrimEnd(), out 
13780 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
13790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
137b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 76          return v
137d0 61 6c 75 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a  alue.dataType;..
137e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
13800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13810 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
13830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13840 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13850 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13860 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
13870 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68   // NOTE: Use th
13880 65 20 64 65 66 61 75 6c 74 20 64 61 74 61 62 61  e default databa
13890 73 65 20 74 79 70 65 20 66 6f 72 20 74 68 65 20  se type for the 
138a0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20  connection...   
138b0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
138c0 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
138d0 44 62 54 79 70 65 20 3d 20 63 6f 6e 6e 65 63 74  DbType = connect
138e0 69 6f 6e 2e 44 65 66 61 75 6c 74 44 62 54 79 70  ion.DefaultDbTyp
138f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  e;..        }...
13900 0a 20 20 20 20 20 20 20 20 69 66 20 28 48 65 6c  .        if (Hel
13910 70 65 72 4d 65 74 68 6f 64 73 2e 48 61 73 46 6c  perMethods.HasFl
13920 61 67 73 28 66 6c 61 67 73 2c 20 53 51 4c 69 74  ags(flags, SQLit
13930 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
13940 2e 4e 6f 47 6c 6f 62 61 6c 54 79 70 65 73 29 29  .NoGlobalTypes))
13950 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
13960 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65 66           if (def
13970 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20 6e 75  aultDbType != nu
13980 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
13990 20 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54       return (DbT
139a0 79 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70  ype)defaultDbTyp
139b0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
139c0 20 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 20    defaultDbType 
139d0 3d 20 47 65 74 44 65 66 61 75 6c 74 44 62 54 79  = GetDefaultDbTy
139e0 70 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d  pe(connection);.
139f0 0a 0d 0a 23 69 66 20 21 4e 45 54 5f 43 4f 4d 50  ...#if !NET_COMP
13a00 41 43 54 5f 32 30 20 26 26 20 54 52 41 43 45 5f  ACT_20 && TRACE_
13a10 57 41 52 4e 49 4e 47 0d 0a 20 20 20 20 20 20 20  WARNING..       
13a20 20 20 20 20 20 44 65 66 61 75 6c 74 44 62 54 79       DefaultDbTy
13a30 70 65 57 61 72 6e 69 6e 67 28 74 79 70 65 4e 61  peWarning(typeNa
13a40 6d 65 2c 20 66 6c 61 67 73 2c 20 64 65 66 61 75  me, flags, defau
13a50 6c 74 44 62 54 79 70 65 29 3b 0d 0a 23 65 6e 64  ltDbType);..#end
13a60 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  if....          
13a70 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70 65    return (DbType
13a80 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b 0d  )defaultDbType;.
13a90 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
13aa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13ab0 20 20 20 20 20 69 66 20 28 28 5f 74 79 70 65 4e       if ((_typeN
13ac0 61 6d 65 73 20 21 3d 20 6e 75 6c 6c 29 20 26 26  ames != null) &&
13ad0 20 28 74 79 70 65 4e 61 6d 65 20 21 3d 20 6e 75   (typeName != nu
13ae0 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
13af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13b00 20 20 20 20 20 53 51 4c 69 74 65 44 62 54 79 70       SQLiteDbTyp
13b10 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 3b 0d  eMapping value;.
13b20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13b30 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65     if (_typeName
13b40 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 74 79  s.TryGetValue(ty
13b50 70 65 4e 61 6d 65 2c 20 6f 75 74 20 76 61 6c 75  peName, out valu
13b60 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
13b70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13b80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13b90 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 54 79 70  rn value.dataTyp
13ba0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
13bb0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13bc0 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
13bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13bf0 20 20 20 20 69 6e 74 20 69 6e 64 65 78 20 3d 20      int index = 
13c00 74 79 70 65 4e 61 6d 65 2e 49 6e 64 65 78 4f 66  typeName.IndexOf
13c10 28 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ('(');....      
13c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13c30 20 28 28 69 6e 64 65 78 20 3e 20 30 29 20 26 26   ((index > 0) &&
13c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c50 20 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e            _typeN
13c60 61 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65  ames.TryGetValue
13c70 28 74 79 70 65 4e 61 6d 65 2e 53 75 62 73 74 72  (typeName.Substr
13c80 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 2e 54 72  ing(0, index).Tr
13c90 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 76 61 6c  imEnd(), out val
13ca0 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
13cb0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cd0 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
13ce0 65 2e 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20  e.dataType;..   
13cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13d10 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
13d20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
13d30 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 64  ...        if (d
13d40 65 66 61 75 6c 74 44 62 54 79 70 65 20 21 3d 20  efaultDbType != 
13d50 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13d60 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79 70     return (DbTyp
13d70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65 3b  e)defaultDbType;
13d80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 65 66 61  ....        defa
13d90 75 6c 74 44 62 54 79 70 65 20 3d 20 47 65 74 44  ultDbType = GetD
13da0 65 66 61 75 6c 74 44 62 54 79 70 65 28 63 6f 6e  efaultDbType(con
13db0 6e 65 63 74 69 6f 6e 29 3b 0d 0a 0d 0a 23 69 66  nection);....#if
13dc0 20 21 4e 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30   !NET_COMPACT_20
13dd0 20 26 26 20 54 52 41 43 45 5f 57 41 52 4e 49 4e   && TRACE_WARNIN
13de0 47 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75  G..        Defau
13df0 6c 74 44 62 54 79 70 65 57 61 72 6e 69 6e 67 28  ltDbTypeWarning(
13e00 74 79 70 65 4e 61 6d 65 2c 20 66 6c 61 67 73 2c  typeName, flags,
13e10 20 64 65 66 61 75 6c 74 44 62 54 79 70 65 29 3b   defaultDbType);
13e20 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20  ..#endif....    
13e30 20 20 20 20 72 65 74 75 72 6e 20 28 44 62 54 79      return (DbTy
13e40 70 65 29 64 65 66 61 75 6c 74 44 62 54 79 70 65  pe)defaultDbType
13e50 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  ;..    }..    #e
13e60 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
13e70 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
13e80 65 61 64 6f 6e 6c 79 20 53 51 4c 69 74 65 44 62  eadonly SQLiteDb
13e90 54 79 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d  TypeMap _typeNam
13ea0 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44 62  es = GetSQLiteDb
13eb0 54 79 70 65 4d 61 70 28 29 3b 0d 0a 20 20 7d 0d  TypeMap();..  }.
13ec0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
13ed0 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65  y>..  /// SQLite
13ee0 20 68 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65   has very limite
13ef0 64 20 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20  d types, and is 
13f00 69 6e 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d  inherently text-
13f10 62 61 73 65 64 2e 20 20 54 68 65 20 66 69 72 73  based.  The firs
13f20 74 20 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20  t 5 types below 
13f30 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 73 75  represent the su
13f40 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53  m of all types S
13f50 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64  QLite..  /// und
13f60 65 72 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44  erstands.  The D
13f70 61 74 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f  ateTime extensio
13f80 6e 20 74 6f 20 74 68 65 20 73 70 65 63 20 69 73  n to the spec is
13f90 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73   for internal us
13fa0 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c  e only...  /// <
13fb0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62  /summary>..  pub
13fc0 6c 69 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66  lic enum TypeAff
13fd0 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20  inity..  {..    
13fe0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
13ff0 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d     /// Not used.
14000 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14010 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69  ry>..    Uniniti
14020 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20  alized = 0,..   
14030 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14040 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65      /// All inte
14050 67 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64  gers in SQLite d
14060 65 66 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d  efault to Int64.
14070 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14080 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d  ry>..    Int64 =
14090 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75   1,..    /// <su
140a0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20  mmary>..    /// 
140b0 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  All floating poi
140c0 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51  nt numbers in SQ
140d0 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20  Lite default to 
140e0 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20  double..    /// 
140f0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
14100 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20  Double = 2,..   
14110 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14120 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61      /// The defa
14130 75 6c 74 20 64 61 74 61 20 74 79 70 65 20 6f 66  ult data type of
14140 20 53 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d   SQLite is text.
14150 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
14160 72 79 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20  ry>..    Text = 
14170 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  3,..    /// <sum
14180 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54  mary>..    /// T
14190 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79  ypically blob ty
141a0 70 65 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65  pes are only see
141b0 6e 20 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20  n when returned 
141c0 66 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d  from a function.
141d0 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
141e0 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20  ry>..    Blob = 
141f0 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  4,..    /// <sum
14200 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  mary>..    /// N
14210 75 6c 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65  ull types can be
14220 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66   returned from f
14230 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f  unctions..    //
14240 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
14250 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20    Null = 5,..   
14260 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14270 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74      /// Used int
14280 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20  ernally by this 
14290 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f  provider..    //
142a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
142b0 20 20 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c    DateTime = 10,
142c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
142d0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65  ry>..    /// Use
142e0 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20  d internally by 
142f0 74 68 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20  this provider.. 
14300 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14310 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31  >..    None = 11
14320 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20  ,..  }....  /// 
14330 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f  <summary>..  ///
14340 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 65   These are the e
14350 76 65 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63  vent types assoc
14360 69 61 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a  iated with the..
14370 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d    /// <see cref=
14380 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f  "SQLiteConnectio
14390 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f  nEventHandler" /
143a0 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74  >..  /// delegat
143b0 65 20 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65  e (and its corre
143c0 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20  sponding event) 
143d0 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c  and the..  /// <
143e0 73 65 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63  see cref="Connec
143f0 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f  tionEventArgs" /
14400 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20  > class...  /// 
14410 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75  </summary>..  pu
14420 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65  blic enum SQLite
14430 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54  ConnectionEventT
14440 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20  ype..  {..      
14450 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14460 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65       /// Not use
14470 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  d...      /// </
14480 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14490 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d  Invalid = -1,...
144a0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
144b0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
144c0 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20  Not used...     
144d0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
144e0 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d  .      Unknown =
144f0 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   0,....      ///
14500 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14510 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
14520 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70  tion is being op
14530 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  ened...      ///
14540 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
14550 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d     Opening = 1,.
14560 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
14570 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14580 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  / The connection
14590 20 73 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e   string has been
145a0 20 70 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20   parsed...      
145b0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
145c0 20 20 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e        Connection
145d0 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20  String = 2,.... 
145e0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
145f0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
14600 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
14610 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20   opened...      
14620 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14630 20 20 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33        Opened = 3
14640 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
14650 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
14660 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65  /// The <see cre
14670 66 3d 22 43 68 61 6e 67 65 44 61 74 61 62 61 73  f="ChangeDatabas
14680 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73  e" /> method was
14690 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a   called on the..
146a0 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63        /// connec
146b0 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f  tion...      ///
146c0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
146d0 20 20 20 43 68 61 6e 67 65 44 61 74 61 62 61 73     ChangeDatabas
146e0 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 4,....      
146f0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
14700 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73       /// A trans
14710 61 63 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74  action was creat
14720 65 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e  ed using the con
14730 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  nection...      
14740 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14750 20 20 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63        NewTransac
14760 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20  tion = 5,....   
14770 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
14780 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20  ..      /// The 
14790 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65  connection was e
147a0 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74  nlisted into a t
147b0 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20  ransaction...   
147c0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
147d0 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54  >..      EnlistT
147e0 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d  ransaction = 6,.
147f0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
14800 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
14810 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20  / A command was 
14820 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68  created using th
14830 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20  e connection... 
14840 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
14850 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f  ry>..      NewCo
14860 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20  mmand = 7,....  
14870 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14880 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64  >..      /// A d
14890 61 74 61 20 72 65 61 64 65 72 20 77 61 73 20 63  ata reader was c
148a0 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 65  reated using the
148b0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20   connection...  
148c0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
148d0 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 44 61 74  y>..      NewDat
148e0 61 52 65 61 64 65 72 20 3d 20 38 2c 0d 0a 0d 0a  aReader = 8,....
148f0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
14900 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41  ry>..      /// A
14910 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20  n instance of a 
14920 3c 73 65 65 20 63 72 65 66 3d 22 43 72 69 74 69  <see cref="Criti
14930 63 61 6c 48 61 6e 64 6c 65 22 20 2f 3e 20 64 65  calHandle" /> de
14940 72 69 76 65 64 20 63 6c 61 73 73 20 68 61 73 0d  rived class has.
14950 0a 20 20 20 20 20 20 2f 2f 2f 20 62 65 65 6e 20  .      /// been 
14960 63 72 65 61 74 65 64 20 74 6f 20 77 72 61 70 20  created to wrap 
14970 61 20 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63  a native resourc
14980 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
14990 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
149a0 4e 65 77 43 72 69 74 69 63 61 6c 48 61 6e 64 6c  NewCriticalHandl
149b0 65 20 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20  e = 9,....      
149c0 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
149d0 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e       /// The con
149e0 6e 65 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67  nection is being
149f0 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20   closed...      
14a00 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14a10 20 20 20 20 20 20 43 6c 6f 73 69 6e 67 20 3d 20        Closing = 
14a20 31 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  10,....      ///
14a30 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
14a40 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63    /// The connec
14a50 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73 65 64 2e  tion was closed.
14a60 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
14a70 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 6c  mmary>..      Cl
14a80 6f 73 65 64 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20  osed = 11,....  
14a90 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
14aa0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 63  >..      /// A c
14ab0 6f 6d 6d 61 6e 64 20 69 73 20 62 65 69 6e 67 20  ommand is being 
14ac0 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
14ad0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14ae0 0a 20 20 20 20 20 20 44 69 73 70 6f 73 69 6e 67  .      Disposing
14af0 43 6f 6d 6d 61 6e 64 20 3d 20 31 32 2c 0d 0a 0d  Command = 12,...
14b00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14b10 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14b20 41 20 64 61 74 61 20 72 65 61 64 65 72 20 69 73  A data reader is
14b30 20 62 65 69 6e 67 20 64 69 73 70 6f 73 65 64 2e   being disposed.
14b40 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
14b50 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 69  mmary>..      Di
14b60 73 70 6f 73 69 6e 67 44 61 74 61 52 65 61 64 65  sposingDataReade
14b70 72 20 3d 20 31 33 2c 0d 0a 0d 0a 20 20 20 20 20  r = 13,....     
14b80 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
14b90 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61 74 61        /// A data
14ba0 20 72 65 61 64 65 72 20 69 73 20 62 65 69 6e 67   reader is being
14bb0 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20   closed...      
14bc0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
14bd0 20 20 20 20 20 20 43 6c 6f 73 69 6e 67 44 61 74        ClosingDat
14be0 61 52 65 61 64 65 72 20 3d 20 31 34 2c 0d 0a 0d  aReader = 14,...
14bf0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14c00 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14c10 41 20 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63  A native resourc
14c20 65 20 77 61 73 20 6f 70 65 6e 65 64 20 28 69 2e  e was opened (i.
14c30 65 2e 20 6f 62 74 61 69 6e 65 64 29 20 66 72 6f  e. obtained) fro
14c40 6d 20 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20  m the pool...   
14c50 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
14c60 3e 0d 0a 20 20 20 20 20 20 4f 70 65 6e 65 64 46  >..      OpenedF
14c70 72 6f 6d 50 6f 6f 6c 20 3d 20 31 35 2c 0d 0a 0d  romPool = 15,...
14c80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
14c90 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
14ca0 41 20 6e 61 74 69 76 65 20 72 65 73 6f 75 72 63  A native resourc
14cb0 65 20 77 61 73 20 63 6c 6f 73 65 64 20 28 69 2e  e was closed (i.
14cc0 65 2e 20 72 65 6c 65 61 73 65 64 29 20 74 6f 20  e. released) to 
14cd0 74 68 65 20 70 6f 6f 6c 2e 0d 0a 20 20 20 20 20  the pool...     
14ce0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
14cf0 0a 20 20 20 20 20 20 43 6c 6f 73 65 64 54 6f 50  .      ClosedToP
14d00 6f 6f 6c 20 3d 20 31 36 0d 0a 20 20 7d 0d 0a 0d  ool = 16..  }...
14d10 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
14d20 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 69 6d 70  ..  /// This imp
14d30 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 53  lementation of S
14d40 51 4c 69 74 65 20 66 6f 72 20 41 44 4f 2e 4e 45  QLite for ADO.NE
14d50 54 20 63 61 6e 20 70 72 6f 63 65 73 73 20 64 61  T can process da
14d60 74 65 2f 74 69 6d 65 20 66 69 65 6c 64 73 20 69  te/time fields i
14d70 6e 0d 0a 20 20 2f 2f 2f 20 64 61 74 61 62 61 73  n..  /// databas
14d80 65 73 20 69 6e 20 6f 6e 65 20 6f 66 20 73 69 78  es in one of six
14d90 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 20 2f 2f 2f   formats...  ///
14da0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f   </summary>..  /
14db0 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20  // <remarks>..  
14dc0 2f 2f 2f 20 49 53 4f 38 36 30 31 20 66 6f 72 6d  /// ISO8601 form
14dd0 61 74 20 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61  at is more compa
14de0 74 69 62 6c 65 2c 20 72 65 61 64 61 62 6c 65 2c  tible, readable,
14df0 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73 73 61 62   fully-processab
14e00 6c 65 2c 20 62 75 74 20 6c 65 73 73 0d 0a 20 20  le, but less..  
14e10 2f 2f 2f 20 61 63 63 75 72 61 74 65 20 61 73 20  /// accurate as 
14e20 69 74 20 64 6f 65 73 20 6e 6f 74 20 70 72 6f 76  it does not prov
14e30 69 64 65 20 74 69 6d 65 20 64 6f 77 6e 20 74 6f  ide time down to
14e40 20 66 72 61 63 74 69 6f 6e 73 20 6f 66 20 61 20   fractions of a 
14e50 73 65 63 6f 6e 64 2e 0d 0a 20 20 2f 2f 2f 20 4a  second...  /// J
14e60 75 6c 69 61 6e 44 61 79 20 69 73 20 74 68 65 20  ulianDay is the 
14e70 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61 74 20 74  numeric format t
14e80 68 65 20 53 51 4c 69 74 65 20 75 73 65 73 20 69  he SQLite uses i
14e90 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20 69 73  nternally and is
14ea0 20 61 72 67 75 61 62 6c 79 0d 0a 20 20 2f 2f 2f   arguably..  ///
14eb0 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d 70 61 74   the most compat
14ec0 69 62 6c 65 20 77 69 74 68 20 33 72 64 20 70 61  ible with 3rd pa
14ed0 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49 74 20 69  rty tools.  It i
14ee0 73 20 6e 6f 74 20 72 65 61 64 61 62 6c 65 20 61  s not readable a
14ef0 73 20 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69  s text..  /// wi
14f00 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65  thout post-proce
14f10 73 73 69 6e 67 2e 20 20 54 69 63 6b 73 20 6c 65  ssing.  Ticks le
14f20 73 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69  ss compatible wi
14f30 74 68 20 33 72 64 20 70 61 72 74 79 20 74 6f 6f  th 3rd party too
14f40 6c 73 20 74 68 61 74 0d 0a 20 20 2f 2f 2f 20 71  ls that..  /// q
14f50 75 65 72 79 20 74 68 65 20 64 61 74 61 62 61 73  uery the databas
14f60 65 2c 20 61 6e 64 20 72 65 6e 64 65 72 73 20 74  e, and renders t
14f70 68 65 20 44 61 74 65 54 69 6d 65 20 66 69 65 6c  he DateTime fiel
14f80 64 20 75 6e 72 65 61 64 61 62 6c 65 20 61 73 20  d unreadable as 
14f90 74 65 78 74 0d 0a 20 20 2f 2f 2f 20 77 69 74 68  text..  /// with
14fa0 6f 75 74 20 70 6f 73 74 2d 70 72 6f 63 65 73 73  out post-process
14fb0 69 6e 67 2e 20 20 55 6e 69 78 45 70 6f 63 68 20  ing.  UnixEpoch 
14fc0 69 73 20 6d 6f 72 65 20 63 6f 6d 70 61 74 69 62  is more compatib
14fd0 6c 65 20 77 69 74 68 20 55 6e 69 78 20 73 79 73  le with Unix sys
14fe0 74 65 6d 73 2e 0d 0a 20 20 2f 2f 2f 20 49 6e 76  tems...  /// Inv
14ff0 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20 61 6c  ariantCulture al
15000 6c 6f 77 73 20 74 68 65 20 63 6f 6e 66 69 67 75  lows the configu
15010 72 65 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74  red format for t
15020 68 65 20 69 6e 76 61 72 69 61 6e 74 20 63 75 6c  he invariant cul
15030 74 75 72 65 0d 0a 20 20 2f 2f 2f 20 66 6f 72 6d  ture..  /// form
15040 61 74 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e  at to be used an
15050 64 20 69 73 20 68 75 6d 61 6e 20 72 65 61 64 61  d is human reada
15060 62 6c 65 2e 20 20 43 75 72 72 65 6e 74 43 75 6c  ble.  CurrentCul
15070 74 75 72 65 20 61 6c 6c 6f 77 73 20 74 68 65 0d  ture allows the.
15080 0a 20 20 2f 2f 2f 20 63 6f 6e 66 69 67 75 72 65  .  /// configure
15090 64 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65  d format for the
150a0 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75 72 65   current culture
150b0 20 74 6f 20 62 65 20 75 73 65 64 20 61 6e 64 20   to be used and 
150c0 69 73 20 61 6c 73 6f 20 68 75 6d 61 6e 0d 0a 20  is also human.. 
150d0 20 2f 2f 2f 20 72 65 61 64 61 62 6c 65 2e 0d 0a   /// readable...
150e0 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54 68 65    ///..  /// The
150f0 20 70 72 65 66 65 72 72 65 64 20 6f 72 64 65 72   preferred order
15100 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20 61 20 44   of choosing a D
15110 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 69  ateTime format i
15120 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20 49 53 4f  s JulianDay, ISO
15130 38 36 30 31 2c 0d 0a 20 20 2f 2f 2f 20 61 6e 64  8601,..  /// and
15140 20 74 68 65 6e 20 54 69 63 6b 73 2e 20 20 54 69   then Ticks.  Ti
15150 63 6b 73 20 69 73 20 6d 61 69 6e 6c 79 20 70 72  cks is mainly pr
15160 65 73 65 6e 74 20 66 6f 72 20 6c 65 67 61 63 79  esent for legacy
15170 20 63 6f 64 65 20 73 75 70 70 6f 72 74 2e 0d 0a   code support...
15180 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
15190 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
151a0 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74  SQLiteDateFormat
151b0 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20  s..  {..    /// 
151c0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
151d0 2f 2f 20 55 73 65 20 74 68 65 20 76 61 6c 75 65  // Use the value
151e0 20 6f 66 20 44 61 74 65 54 69 6d 65 2e 54 69 63   of DateTime.Tic
151f0 6b 73 2e 20 20 54 68 69 73 20 76 61 6c 75 65 20  ks.  This value 
15200 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64  is not recommend
15210 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20 77 65  ed and is not we
15220 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 77 69 74  ll supported wit
15230 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f 2f 2f  h LINQ...    ///
15240 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15250 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a 20 20 20   Ticks = 0,..   
15260 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
15270 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20      /// Use the 
15280 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d 61 74 2e  ISO-8601 format.
15290 20 20 55 73 65 73 20 74 68 65 20 22 79 79 79 79    Uses the "yyyy
152a0 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e  -MM-dd HH:mm:ss.
152b0 46 46 46 46 46 46 46 4b 22 20 66 6f 72 6d 61 74  FFFFFFFK" format
152c0 20 66 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d   for UTC DateTim
152d0 65 20 76 61 6c 75 65 73 20 61 6e 64 0d 0a 20 20  e values and..  
152e0 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d 2d 64    /// "yyyy-MM-d
152f0 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46  d HH:mm:ss.FFFFF
15300 46 46 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c  FF" format for l
15310 6f 63 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61  ocal DateTime va
15320 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20  lues)...    /// 
15330 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
15340 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d 0a 20 20  ISO8601 = 1,..  
15350 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
15360 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e 74  .    /// The int
15370 65 72 76 61 6c 20 6f 66 20 74 69 6d 65 20 69 6e  erval of time in
15380 20 64 61 79 73 20 61 6e 64 20 66 72 61 63 74 69   days and fracti
15390 6f 6e 73 20 6f 66 20 61 20 64 61 79 20 73 69 6e  ons of a day sin
153a0 63 65 20 4a 61 6e 75 61 72 79 20 31 2c 20 34 37  ce January 1, 47
153b0 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f 2f 2f 20  13 BC...    /// 
153c0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
153d0 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32 2c 0d 0a  JulianDay = 2,..
153e0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
153f0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 77  >..    /// The w
15400 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 73  hole number of s
15410 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 65  econds since the
15420 20 55 6e 69 78 20 65 70 6f 63 68 20 28 4a 61 6e   Unix epoch (Jan
15430 75 61 72 79 20 31 2c 20 31 39 37 30 29 2e 0d 0a  uary 1, 1970)...
15440 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
15450 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45 70 6f 63  y>..    UnixEpoc
15460 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20  h = 3,..    /// 
15470 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
15480 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72 65 2d 69  // Any culture-i
15490 6e 64 65 70 65 6e 64 65 6e 74 20 73 74 72 69 6e  ndependent strin
154a0 67 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 65  g value that the
154b0 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20   .NET Framework 
154c0 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 73  can interpret as
154d0 20 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 6d   a valid DateTim
154e0 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
154f0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 76 61  mmary>..    Inva
15500 72 69 61 6e 74 43 75 6c 74 75 72 65 20 3d 20 34  riantCulture = 4
15510 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ,..    /// <summ
15520 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e  ary>..    /// An
15530 79 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 74  y string value t
15540 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46 72 61  hat the .NET Fra
15550 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 72  mework can inter
15560 70 72 65 74 20 61 73 20 61 20 76 61 6c 69 64 20  pret as a valid 
15570 44 61 74 65 54 69 6d 65 20 75 73 69 6e 67 20 74  DateTime using t
15580 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74 75  he current cultu
15590 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  re...    /// </s
155a0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 43 75 72  ummary>..    Cur
155b0 72 65 6e 74 43 75 6c 74 75 72 65 20 3d 20 35 2c  rentCulture = 5,
155c0 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
155d0 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65  ry>..    /// The
155e0 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20   default format 
155f0 66 6f 72 20 74 68 69 73 20 70 72 6f 76 69 64 65  for this provide
15600 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  r...    /// </su
15610 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 61  mmary>..    Defa
15620 75 6c 74 20 3d 20 49 53 4f 38 36 30 31 0d 0a 20  ult = ISO8601.. 
15630 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d   }....  /// <sum
15640 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69  mary>..  /// Thi
15650 73 20 65 6e 75 6d 20 64 65 74 65 72 6d 69 6e 65  s enum determine
15660 73 20 68 6f 77 20 53 51 4c 69 74 65 20 74 72 65  s how SQLite tre
15670 61 74 73 20 69 74 73 20 6a 6f 75 72 6e 61 6c 20  ats its journal 
15680 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  file...  /// </s
15690 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c  ummary>..  /// <
156a0 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20  remarks>..  /// 
156b0 42 79 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74  By default SQLit
156c0 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20 61 6e  e will create an
156d0 64 20 64 65 6c 65 74 65 20 74 68 65 20 6a 6f 75  d delete the jou
156e0 72 6e 61 6c 20 66 69 6c 65 20 77 68 65 6e 20 6e  rnal file when n
156f0 65 65 64 65 64 20 64 75 72 69 6e 67 20 61 20 74  eeded during a t
15700 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 2f  ransaction...  /
15710 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 20  // However, for 
15720 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72 73 20 72  some computers r
15730 75 6e 6e 69 6e 67 20 63 65 72 74 61 69 6e 20 66  unning certain f
15740 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e 69 74 6f  ilesystem monito
15750 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74 68 65 20  ring tools, the 
15760 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20 63 72 65  rapid..  /// cre
15770 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c 65 74 69  ation and deleti
15780 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75 72 6e 61  on of the journa
15790 6c 20 66 69 6c 65 20 63 61 6e 20 63 61 75 73 65  l file can cause
157a0 20 74 68 6f 73 65 20 70 72 6f 67 72 61 6d 73 20   those programs 
157b0 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74 6f 20 69  to fail, or to i
157c0 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 53 51  nterfere with SQ
157d0 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 20  Lite...  ///..  
157e0 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67 72 61 6d  /// If a program
157f0 20 6f 72 20 76 69 72 75 73 20 73 63 61 6e 6e 65   or virus scanne
15800 72 20 69 73 20 69 6e 74 65 72 66 65 72 69 6e 67  r is interfering
15810 20 77 69 74 68 20 53 51 4c 69 74 65 27 73 20 6a   with SQLite's j
15820 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20 79 6f 75  ournal file, you
15830 20 6d 61 79 20 72 65 63 65 69 76 65 20 65 72 72   may receive err
15840 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61 62 6c 65  ors like "unable
15850 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 73   to open databas
15860 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f 20 77  e file"..  /// w
15870 68 65 6e 20 73 74 61 72 74 69 6e 67 20 61 20 74  hen starting a t
15880 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49 66 20  ransaction.  If 
15890 74 68 69 73 20 69 73 20 68 61 70 70 65 6e 69 6e  this is happenin
158a0 67 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20  g, you may want 
158b0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 64 65  to change the de
158c0 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c 20 6d 6f  fault journal mo
158d0 64 65 20 74 6f 20 50 65 72 73 69 73 74 2e 0d 0a  de to Persist...
158e0 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e    /// </remarks>
158f0 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
15900 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f 64  SQLiteJournalMod
15910 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 20  eEnum..  {..    
15920 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15930 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 75     /// The defau
15940 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73 20 63 61  lt mode, this ca
15950 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 75  uses SQLite to u
15960 73 65 20 74 68 65 20 65 78 69 73 74 69 6e 67 20  se the existing 
15970 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 20  journaling mode 
15980 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73 65  for the database
15990 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
159a0 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 75  mary>..    Defau
159b0 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20 20 2f 2f  lt = -1,..    //
159c0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
159d0 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c 6c   /// SQLite will
159e0 20 63 72 65 61 74 65 20 61 6e 64 20 64 65 73 74   create and dest
159f0 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  roy the journal 
15a00 66 69 6c 65 20 61 73 2d 6e 65 65 64 65 64 2e 0d  file as-needed..
15a10 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
15a20 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65 74 65 20  ry>..    Delete 
15a30 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  = 0,..    /// <s
15a40 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
15a50 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 73 65   When this is se
15a60 74 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6b  t, SQLite will k
15a70 65 65 70 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20  eep the journal 
15a80 66 69 6c 65 20 65 76 65 6e 20 61 66 74 65 72 20  file even after 
15a90 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61  a transaction ha
15aa0 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 74  s completed.  It
15ab0 27 73 20 63 6f 6e 74 65 6e 74 73 20 77 69 6c 6c  's contents will
15ac0 20 62 65 20 65 72 61 73 65 64 2c 0d 0a 20 20 20   be erased,..   
15ad0 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6a 6f 75   /// and the jou
15ae0 72 6e 61 6c 20 72 65 2d 75 73 65 64 20 61 73 20  rnal re-used as 
15af0 6f 66 74 65 6e 20 61 73 20 6e 65 65 64 65 64 2e  often as needed.
15b00 20 20 49 66 20 69 74 20 69 73 20 64 65 6c 65 74    If it is delet
15b10 65 64 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 72  ed, it will be r
15b20 65 63 72 65 61 74 65 64 20 74 68 65 20 6e 65 78  ecreated the nex
15b30 74 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 65  t time it is nee
15b40 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f  ded...    /// </
15b50 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 50 65  summary>..    Pe
15b60 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20 20 20 20  rsist = 1,..    
15b70 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
15b80 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 69     /// This opti
15b90 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  on disables the 
15ba0 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c  rollback journal
15bb0 20 65 6e 74 69 72 65 6c 79 2e 20 20 49 6e 74 65   entirely.  Inte
15bc0 72 72 75 70 74 65 64 20 74 72 61 6e 73 61 63 74  rrupted transact
15bd0 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f 67 72 61  ions or a progra
15be0 6d 20 63 72 61 73 68 20 63 61 6e 20 63 61 75 73  m crash can caus
15bf0 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20 20  e database..    
15c00 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f 6e 20 69  /// corruption i
15c10 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d 0a 20 20  n this mode!..  
15c20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
15c30 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32 2c 0d 0a  ..    Off = 2,..
15c40 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15c50 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  >..    /// SQLit
15c60 65 20 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 20  e will truncate 
15c70 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  the journal file
15c80 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 20   to zero-length 
15c90 69 6e 73 74 65 61 64 20 6f 66 20 64 65 6c 65 74  instead of delet
15ca0 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 2f 2f 2f  ing it...    ///
15cb0 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20   </summary>..   
15cc0 20 54 72 75 6e 63 61 74 65 20 3d 20 33 2c 0d 0a   Truncate = 3,..
15cd0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
15ce0 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74  >..    /// SQLit
15cf0 65 20 77 69 6c 6c 20 73 74 6f 72 65 20 74 68 65  e will store the
15d00 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76 6f 6c 61   journal in vola
15d10 74 69 6c 65 20 52 41 4d 2e 20 20 54 68 69 73 20  tile RAM.  This 
15d20 73 61 76 65 73 20 64 69 73 6b 20 49 2f 4f 20 62  saves disk I/O b
15d30 75 74 20 61 74 20 74 68 65 20 65 78 70 65 6e 73  ut at the expens
15d40 65 20 6f 66 20 64 61 74 61 62 61 73 65 20 73 61  e of database sa
15d50 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67 72 69  fety and integri
15d60 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20  ty...    /// If 
15d70 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
15d80 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61  using SQLite cra
15d90 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 64  shes in the midd
15da0 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74  le of a transact
15db0 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 4d 45 4d  ion when the MEM
15dc0 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d  ORY journaling m
15dd0 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68 65 6e  ode is set, then
15de0 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 61   the..    /// da
15df0 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c  tabase file will
15e00 20 76 65 72 79 20 6c 69 6b 65 6c 79 20 67 6f 20   very likely go 
15e10 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20 20 2f 2f  corrupt...    //
15e20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
15e30 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d 0a 20    Memory = 4,.. 
15e40 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
15e50 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 65  ..    /// SQLite
15e60 20 75 73 65 73 20 61 20 77 72 69 74 65 2d 61 68   uses a write-ah
15e70 65 61 64 20 6c 6f 67 20 69 6e 73 74 65 61 64 20  ead log instead 
15e80 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  of a rollback jo
15e90 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c 65 6d 65  urnal to impleme
15ea0 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  nt transactions.
15eb0 20 20 54 68 65 20 57 41 4c 20 6a 6f 75 72 6e 61    The WAL journa
15ec0 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 70 65 72  ling mode is per
15ed0 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20 20 2f 2f  sistent;..    //
15ee0 2f 20 61 66 74 65 72 20 62 65 69 6e 67 20 73 65  / after being se
15ef0 74 20 69 74 20 73 74 61 79 73 20 69 6e 20 65 66  t it stays in ef
15f00 66 65 63 74 20 61 63 72 6f 73 73 20 6d 75 6c 74  fect across mult
15f10 69 70 6c 65 20 64 61 74 61 62 61 73 65 20 63 6f  iple database co
15f20 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20 61 66  nnections and af
15f30 74 65 72 20 63 6c 6f 73 69 6e 67 20 61 6e 64 20  ter closing and 
15f40 72 65 6f 70 65 6e 69 6e 67 20 74 68 65 20 64 61  reopening the da
15f50 74 61 62 61 73 65 2e 20 41 20 64 61 74 61 62 61  tabase. A databa
15f60 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 57  se..    /// in W
15f70 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f  AL journaling mo
15f80 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61  de can only be a
15f90 63 63 65 73 73 65 64 20 62 79 20 53 51 4c 69 74  ccessed by SQLit
15fa0 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 20  e version 3.7.0 
15fb0 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 2f  or later...    /
15fc0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
15fd0 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20 20 7d 0d     Wal = 5..  }.
15fe0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
15ff0 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73 69 62  y>..  /// Possib
16000 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 68  le values for th
16010 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20  e "synchronous" 
16020 64 61 74 61 62 61 73 65 20 73 65 74 74 69 6e 67  database setting
16030 2e 20 20 54 68 69 73 20 73 65 74 74 69 6e 67 20  .  This setting 
16040 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20 20 2f 2f  determines..  //
16050 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74 68 65 20  / how often the 
16060 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20  database engine 
16070 63 61 6c 6c 73 20 74 68 65 20 78 53 79 6e 63 20  calls the xSync 
16080 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46  method of the VF
16090 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d  S...  /// </summ
160a0 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c  ary>..  internal
160b0 20 65 6e 75 6d 20 53 51 4c 69 74 65 53 79 6e 63   enum SQLiteSync
160c0 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20 20 7b  hronousEnum..  {
160d0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
160e0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
160f0 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c 74   Use the default
16100 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 64   "synchronous" d
16110 61 74 61 62 61 73 65 20 73 65 74 74 69 6e 67 2e  atabase setting.
16120 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74 68 69    Currently, thi
16130 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 20  s should be..   
16140 20 20 20 2f 2f 2f 20 74 68 65 20 73 61 6d 65 20     /// the same 
16150 61 73 20 75 73 69 6e 67 20 74 68 65 20 46 55 4c  as using the FUL
16160 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 2f  L mode...      /
16170 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16180 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 2d       Default = -
16190 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  1,....      /// 
161a0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
161b0 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 73   /// The databas
161c0 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74 69 6e 75  e engine continu
161d0 65 73 20 77 69 74 68 6f 75 74 20 73 79 6e 63 69  es without synci
161e0 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73 20 69 74  ng as soon as it
161f0 20 68 61 73 20 68 61 6e 64 65 64 0d 0a 20 20 20   has handed..   
16200 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f 66 66 20     /// data off 
16210 74 6f 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  to the operating
16220 20 73 79 73 74 65 6d 2e 20 20 49 66 20 74 68 65   system.  If the
16230 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 75 6e   application run
16240 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a 20 20 20  ning SQLite..   
16250 20 20 20 2f 2f 2f 20 63 72 61 73 68 65 73 2c 20     /// crashes, 
16260 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65  the data will be
16270 20 73 61 66 65 2c 20 62 75 74 20 74 68 65 20 64   safe, but the d
16280 61 74 61 62 61 73 65 20 6d 69 67 68 74 20 62 65  atabase might be
16290 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 0d 0a  come corrupted..
162a0 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 65        /// if the
162b0 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
162c0 6d 20 63 72 61 73 68 65 73 20 6f 72 20 74 68 65  m crashes or the
162d0 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73 65 73 20   computer loses 
162e0 70 6f 77 65 72 20 62 65 66 6f 72 65 20 74 68 61  power before tha
162f0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 74  t..      /// dat
16300 61 20 68 61 73 20 62 65 65 6e 20 77 72 69 74 74  a has been writt
16310 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20 73  en to the disk s
16320 75 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 2f  urface...      /
16330 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
16340 20 20 20 20 20 4f 66 66 20 3d 20 30 2c 0d 0a 0d       Off = 0,...
16350 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
16360 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
16370 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  The database eng
16380 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c 20 73  ine will still s
16390 79 6e 63 20 61 74 20 74 68 65 20 6d 6f 73 74 20  ync at the most 
163a0 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 73  critical moments
163b0 2c 20 62 75 74 0d 0a 20 20 20 20 20 20 2f 2f 2f  , but..      ///
163c0 20 6c 65 73 73 20 6f 66 74 65 6e 20 74 68 61 6e   less often than
163d0 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e 20 20   in FULL mode.  
163e0 54 68 65 72 65 20 69 73 20 61 20 76 65 72 79 20  There is a very 
163f0 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68 20 6e 6f  small (though no
16400 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20 20 20 2f  n-zero)..      /
16410 2f 2f 20 63 68 61 6e 63 65 20 74 68 61 74 20 61  // chance that a
16420 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20 61   power failure a
16430 74 20 6a 75 73 74 20 74 68 65 20 77 72 6f 6e 67  t just the wrong
16440 20 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72   time could corr
16450 75 70 74 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  upt the..      /
16460 2f 2f 20 64 61 74 61 62 61 73 65 20 69 6e 20 4e  // database in N
16470 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20  ORMAL mode...   
16480 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16490 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d 61 6c 20  >..      Normal 
164a0 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 1,....      //
164b0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
164c0 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62     /// The datab
164d0 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20  ase engine will 
164e0 75 73 65 20 74 68 65 20 78 53 79 6e 63 20 6d 65  use the xSync me
164f0 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46 53 20  thod of the VFS 
16500 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 0d 0a  to ensure that..
16510 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 20 63 6f        /// all co
16520 6e 74 65 6e 74 20 69 73 20 73 61 66 65 6c 79 20  ntent is safely 
16530 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 64  written to the d
16540 69 73 6b 20 73 75 72 66 61 63 65 20 70 72 69 6f  isk surface prio
16550 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69 6e 67 2e  r to continuing.
16560 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 73  ..      /// This
16570 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 61 6e   ensures that an
16580 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
16590 6d 20 63 72 61 73 68 20 6f 72 20 70 6f 77 65 72  m crash or power
165a0 20 66 61 69 6c 75 72 65 20 77 69 6c 6c 20 6e 6f   failure will no
165b0 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f 72  t..      /// cor
165c0 72 75 70 74 20 74 68 65 20 64 61 74 61 62 61 73  rupt the databas
165d0 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f  e.  FULL synchro
165e0 6e 6f 75 73 20 69 73 20 76 65 72 79 20 73 61 66  nous is very saf
165f0 65 2c 20 62 75 74 20 69 74 20 69 73 20 61 6c 73  e, but it is als
16600 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 6c 6f  o..      /// slo
16610 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  wer...      /// 
16620 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
16630 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20 20 7d 0d    Full = 2..  }.
16640 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
16650 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 72 65  y>..  /// The re
16660 71 75 65 73 74 65 64 20 63 6f 6d 6d 61 6e 64 20  quested command 
16670 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20  execution type. 
16680 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c 73 20 77   This controls w
16690 68 69 63 68 20 6d 65 74 68 6f 64 20 6f 66 20 74  hich method of t
166a0 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 63  he..  /// <see c
166b0 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61  ref="SQLiteComma
166c0 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74 20 77 69  nd" /> object wi
166d0 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20  ll be called... 
166e0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
166f0 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53  .  public enum S
16700 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 70 65  QLiteExecuteType
16710 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f  ..  {..      ///
16720 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16730 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69 6e 67    /// Do nothing
16740 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20 77 69 6c  .  No method wil
16750 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  l be called...  
16760 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16770 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 3d  y>..      None =
16780 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   0,....      ///
16790 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
167a0 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 6e    /// The comman
167b0 64 20 69 73 20 6e 6f 74 20 65 78 70 65 63 74 65  d is not expecte
167c0 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 72 65  d to return a re
167d0 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65  sult -OR- the re
167e0 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a 20 20 20  sult is not..   
167f0 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64 2e 20 20     /// needed.  
16800 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
16810 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
16820 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 22 20  cuteNonQuery()" 
16830 2f 3e 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f  /> or..      ///
16840 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
16850 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74  teCommand.Execut
16860 65 4e 6f 6e 51 75 65 72 79 28 43 6f 6d 6d 61 6e  eNonQuery(Comman
16870 64 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 20  dBehavior)" />  
16880 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 2f 2f  method..      //
16890 2f 20 77 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64  / will be called
168a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
168b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 4e  ummary>..      N
168c0 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d 0a 0d 0a  onQuery = 1,....
168d0 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61        /// <summa
168e0 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54  ry>..      /// T
168f0 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 65 78  he command is ex
16900 70 65 63 74 65 64 20 74 6f 20 72 65 74 75 72 6e  pected to return
16910 20 61 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74   a scalar result
16920 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 6c 74   -OR- the result
16930 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 20 2f   should..      /
16940 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64 20 74 6f  // be limited to
16950 20 61 20 73 63 61 6c 61 72 20 72 65 73 75 6c 74   a scalar result
16960 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72 65 66  .  The <see cref
16970 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e  ="SQLiteCommand.
16980 45 78 65 63 75 74 65 53 63 61 6c 61 72 28 29 22  ExecuteScalar()"
16990 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6f   />..      /// o
169a0 72 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  r <see cref="SQL
169b0 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75  iteCommand.Execu
169c0 74 65 53 63 61 6c 61 72 28 43 6f 6d 6d 61 6e 64  teScalar(Command
169d0 42 65 68 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65  Behavior)" /> me
169e0 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20  thod will..     
169f0 20 2f 2f 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d   /// be called..
16a00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
16a10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 63 61  mary>..      Sca
16a20 6c 61 72 20 3d 20 32 2c 0d 0a 0d 0a 20 20 20 20  lar = 2,....    
16a30 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
16a40 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63  .      /// The c
16a50 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 63 74  ommand is expect
16a60 65 64 20 74 6f 20 72 65 74 75 72 6e 20 3c 73 65  ed to return <se
16a70 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
16a80 74 61 52 65 61 64 65 72 22 20 2f 3e 20 72 65 73  taReader" /> res
16a90 75 6c 74 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ult...      /// 
16aa0 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 53  The <see cref="S
16ab0 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 65  QLiteCommand.Exe
16ac0 63 75 74 65 52 65 61 64 65 72 28 29 22 20 2f 3e  cuteReader()" />
16ad0 20 6f 72 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c   or..      /// <
16ae0 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65  see cref="SQLite
16af0 43 6f 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52  Command.ExecuteR
16b00 65 61 64 65 72 28 43 6f 6d 6d 61 6e 64 42 65 68  eader(CommandBeh
16b10 61 76 69 6f 72 29 22 20 2f 3e 20 6d 65 74 68 6f  avior)" /> metho
16b20 64 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20 2f 2f  d will..      //
16b30 2f 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20  / be called...  
16b40 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16b50 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 65 72  y>..      Reader
16b60 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 3,....      /
16b70 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
16b80 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20      /// Use the 
16b90 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 20  default command 
16ba0 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20  execution type. 
16bb0 20 55 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75   Using this valu
16bc0 65 20 69 73 20 74 68 65 20 73 61 6d 65 0d 0a 20  e is the same.. 
16bd0 20 20 20 20 20 2f 2f 2f 20 61 73 20 75 73 69 6e       /// as usin
16be0 67 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d  g the <see cref=
16bf0 22 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79  "SQLiteExecuteTy
16c00 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20 2f 3e 20  pe.NonQuery" /> 
16c10 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
16c20 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
16c30 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 4e 6f      Default = No
16c40 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44 4f 3a 20  nQuery /* TODO: 
16c50 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f 20 2a 2f  Good default? */
16c60 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c  ..  }....  /// <
16c70 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20  summary>..  /// 
16c80 54 68 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20  The action code 
16c90 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20  responsible for 
16ca0 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 6c 6c  the current call
16cb0 20 69 6e 74 6f 20 74 68 65 20 61 75 74 68 6f 72   into the author
16cc0 69 7a 65 72 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73  izer...  /// </s
16cd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 6c 69  ummary>..  publi
16ce0 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 41 75 74  c enum SQLiteAut
16cf0 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64  horizerActionCod
16d00 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f  e..  {..      //
16d10 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
16d20 20 20 20 2f 2f 2f 20 4e 6f 20 61 63 74 69 6f 6e     /// No action
16d30 20 69 73 20 62 65 69 6e 67 20 70 65 72 66 6f 72   is being perfor
16d40 6d 65 64 2e 20 20 54 68 69 73 20 76 61 6c 75 65  med.  This value
16d50 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75   should not be u
16d60 73 65 64 20 66 72 6f 6d 0d 0a 20 20 20 20 20 20  sed from..      
16d70 2f 2f 2f 20 65 78 74 65 72 6e 61 6c 20 63 6f 64  /// external cod
16d80 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f  e...      /// </
16d90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16da0 4e 6f 6e 65 20 3d 20 2d 31 2c 0d 0a 0d 0a 20 20  None = -1,....  
16db0 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
16dc0 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 4e 6f 20  >..      /// No 
16dd0 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0d 0a 20 20  longer used...  
16de0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
16df0 79 3e 0d 0a 20 20 20 20 20 20 43 6f 70 79 20 3d  y>..      Copy =
16e00 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f   0,....      ///
16e10 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
16e20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20 77    /// An index w
16e30 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20  ill be created. 
16e40 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
16e50 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
16e60 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f  re the..      //
16e70 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64  / index name and
16e80 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
16e90 0d 0a 20 20 20 20 20 20 2f 2f 2f 0d 0a 20 20 20  ..      ///..   
16ea0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
16eb0 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74 65 49  >..      CreateI
16ec0 6e 64 65 78 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20  ndex = 1,....   
16ed0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
16ee0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 61  ..      /// A ta
16ef0 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ble will be crea
16f00 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
16f10 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
16f20 6e 74 73 20 61 72 65 20 74 68 65 0d 0a 20 20 20  nts are the..   
16f30 20 20 20 2f 2f 2f 20 74 61 62 6c 65 20 6e 61 6d     /// table nam
16f40 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
16f50 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
16f60 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
16f70 20 43 72 65 61 74 65 54 61 62 6c 65 20 3d 20 32   CreateTable = 2
16f80 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
16f90 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
16fa0 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20  /// A temporary 
16fb0 69 6e 64 65 78 20 77 69 6c 6c 20 62 65 20 63 72  index will be cr
16fc0 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
16fd0 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
16fe0 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
16ff0 20 61 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e   are the index n
17000 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
17010 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
17020 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
17030 20 20 20 20 20 43 72 65 61 74 65 54 65 6d 70 49       CreateTempI
17040 6e 64 65 78 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20  ndex = 3,....   
17050 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17060 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 65  ..      /// A te
17070 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 20 77 69  mporary table wi
17080 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20  ll be created.  
17090 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
170a0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
170b0 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65       /// are the
170c0 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20   table name and 
170d0 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20  a null value... 
170e0 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
170f0 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65 61 74  ry>..      Creat
17100 65 54 65 6d 70 54 61 62 6c 65 20 3d 20 34 2c 0d  eTempTable = 4,.
17110 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
17120 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
17130 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 74 72  / A temporary tr
17140 69 67 67 65 72 20 77 69 6c 6c 20 62 65 20 63 72  igger will be cr
17150 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
17160 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
17170 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f  ments..      ///
17180 20 61 72 65 20 74 68 65 20 74 72 69 67 67 65 72   are the trigger
17190 20 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61   name and the ta
171a0 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20  ble name...     
171b0 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
171c0 0a 20 20 20 20 20 20 43 72 65 61 74 65 54 65 6d  .      CreateTem
171d0 70 54 72 69 67 67 65 72 20 3d 20 35 2c 0d 0a 0d  pTrigger = 5,...
171e0 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
171f0 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17200 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77  A temporary view
17210 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64   will be created
17220 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70  .  The action-sp
17230 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73  ecific arguments
17240 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   are..      /// 
17250 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20 61 6e  the view name an
17260 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d  d a null value..
17270 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17280 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72 65  mary>..      Cre
17290 61 74 65 54 65 6d 70 56 69 65 77 20 3d 20 36 2c  ateTempView = 6,
172a0 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
172b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
172c0 2f 2f 20 41 20 74 72 69 67 67 65 72 20 77 69 6c  // A trigger wil
172d0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 54  l be created.  T
172e0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
172f0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
17300 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
17310 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e 64  trigger name and
17320 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 2e   the table name.
17330 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
17340 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 43 72  mmary>..      Cr
17350 65 61 74 65 54 72 69 67 67 65 72 20 3d 20 37 2c  eateTrigger = 7,
17360 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17370 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17380 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62  // A view will b
17390 65 20 63 72 65 61 74 65 64 2e 20 20 54 68 65 20  e created.  The 
173a0 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
173b0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
173c0 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f  e view..      //
173d0 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  / name and a nul
173e0 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
173f0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17400 20 20 20 20 20 20 43 72 65 61 74 65 56 69 65 77        CreateView
17410 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f   = 8,....      /
17420 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17430 20 20 20 20 2f 2f 2f 20 41 20 44 45 4c 45 54 45      /// A DELETE
17440 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
17450 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
17460 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17470 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17480 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
17490 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
174a0 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
174b0 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
174c0 3e 0d 0a 20 20 20 20 20 20 44 65 6c 65 74 65 20  >..      Delete 
174d0 3d 20 39 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  = 9,....      //
174e0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
174f0 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78 20     /// An index 
17500 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e  will be dropped.
17510 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65    The action-spe
17520 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20  cific arguments 
17530 61 72 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f  are the..      /
17540 2f 2f 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e  // index name an
17550 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  d the table name
17560 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17570 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
17580 72 6f 70 49 6e 64 65 78 20 3d 20 31 30 2c 0d 0a  ropIndex = 10,..
17590 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
175a0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
175b0 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65   A table will be
175c0 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
175d0 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
175e0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
175f0 20 74 61 62 6c 65 73 0d 0a 20 20 20 20 20 20 2f   tables..      /
17600 2f 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75  // name and a nu
17610 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20  ll value...     
17620 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
17630 0a 20 20 20 20 20 20 44 72 6f 70 54 61 62 6c 65  .      DropTable
17640 20 3d 20 31 31 2c 0d 0a 0d 0a 20 20 20 20 20 20   = 11,....      
17650 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
17660 20 20 20 20 20 2f 2f 2f 20 41 20 74 65 6d 70 6f       /// A tempo
17670 72 61 72 79 20 69 6e 64 65 78 20 77 69 6c 6c 20  rary index will 
17680 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
17690 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
176a0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a   arguments are..
176b0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 69 6e        /// the in
176c0 64 65 78 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  dex name and the
176d0 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
176e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
176f0 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65  y>..      DropTe
17700 6d 70 49 6e 64 65 78 20 3d 20 31 32 2c 0d 0a 0d  mpIndex = 12,...
17710 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  .      /// <summ
17720 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  ary>..      /// 
17730 41 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c  A temporary tabl
17740 65 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70 65  e will be droppe
17750 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d 73  d.  The action-s
17760 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e 74  pecific argument
17770 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  s are..      ///
17780 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20   the table name 
17790 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
177a0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
177b0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
177c0 72 6f 70 54 65 6d 70 54 61 62 6c 65 20 3d 20 31  ropTempTable = 1
177d0 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  3,....      /// 
177e0 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  <summary>..     
177f0 20 2f 2f 2f 20 41 20 74 65 6d 70 6f 72 61 72 79   /// A temporary
17800 20 74 72 69 67 67 65 72 20 77 69 6c 6c 20 62 65   trigger will be
17810 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20 61   dropped.  The a
17820 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 61  ction-specific a
17830 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20 20 20 20  rguments..      
17840 2f 2f 2f 20 61 72 65 20 74 68 65 20 74 72 69 67  /// are the trig
17850 67 65 72 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ger name and the
17860 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20   table name...  
17870 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
17880 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 54 65  y>..      DropTe
17890 6d 70 54 72 69 67 67 65 72 20 3d 20 31 34 2c 0d  mpTrigger = 14,.
178a0 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75  ...      /// <su
178b0 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f  mmary>..      //
178c0 2f 20 41 20 74 65 6d 70 6f 72 61 72 79 20 76 69  / A temporary vi
178d0 65 77 20 77 69 6c 6c 20 62 65 20 64 72 6f 70 70  ew will be dropp
178e0 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
178f0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
17900 74 73 20 61 72 65 0d 0a 20 20 20 20 20 20 2f 2f  ts are..      //
17910 2f 20 74 68 65 20 76 69 65 77 20 6e 61 6d 65 20  / the view name 
17920 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
17930 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17940 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
17950 72 6f 70 54 65 6d 70 56 69 65 77 20 3d 20 31 35  ropTempView = 15
17960 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
17970 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
17980 2f 2f 2f 20 41 20 74 72 69 67 67 65 72 20 77 69  /// A trigger wi
17990 6c 6c 20 62 65 20 64 72 6f 70 70 65 64 2e 20 20  ll be dropped.  
179a0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
179b0 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
179c0 65 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f  e the..      ///
179d0 20 74 72 69 67 67 65 72 20 6e 61 6d 65 20 61 6e   trigger name an
179e0 64 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  d the table name
179f0 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
17a00 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44  ummary>..      D
17a10 72 6f 70 54 72 69 67 67 65 72 20 3d 20 31 36 2c  ropTrigger = 16,
17a20 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73  ....      /// <s
17a30 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f  ummary>..      /
17a40 2f 2f 20 41 20 76 69 65 77 20 77 69 6c 6c 20 62  // A view will b
17a50 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65 20  e dropped.  The 
17a60 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20  action-specific 
17a70 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68  arguments are th
17a80 65 20 76 69 65 77 0d 0a 20 20 20 20 20 20 2f 2f  e view..      //
17a90 2f 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  / name and a nul
17aa0 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
17ab0 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
17ac0 20 20 20 20 20 20 44 72 6f 70 56 69 65 77 20 3d        DropView =
17ad0 20 31 37 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f   17,....      //
17ae0 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
17af0 20 20 20 2f 2f 2f 20 41 6e 20 49 4e 53 45 52 54     /// An INSERT
17b00 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
17b10 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
17b20 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17b30 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17b40 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 74     /// are the t
17b50 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 61 20  able name and a 
17b60 6e 75 6c 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20  null value...   
17b70 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79     /// </summary
17b80 3e 0d 0a 20 20 20 20 20 20 49 6e 73 65 72 74 20  >..      Insert 
17b90 3d 20 31 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 18,....      /
17ba0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17bb0 20 20 20 20 2f 2f 2f 20 41 20 50 52 41 47 4d 41      /// A PRAGMA
17bc0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
17bd0 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54 68  be executed.  Th
17be0 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
17bf0 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20 20  c arguments..   
17c00 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20 6e     /// are the n
17c10 61 6d 65 20 6f 66 20 74 68 65 20 50 52 41 47 4d  ame of the PRAGM
17c20 41 20 61 6e 64 20 74 68 65 20 6e 65 77 20 76 61  A and the new va
17c30 6c 75 65 20 6f 72 20 61 20 6e 75 6c 6c 20 76 61  lue or a null va
17c40 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  lue...      /// 
17c50 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
17c60 20 20 50 72 61 67 6d 61 20 3d 20 31 39 2c 0d 0a    Pragma = 19,..
17c70 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
17c80 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
17c90 20 41 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20   A table column 
17ca0 77 69 6c 6c 20 62 65 20 72 65 61 64 2e 20 20 54  will be read.  T
17cb0 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17cc0 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65  ic arguments are
17cd0 20 74 68 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20   the..      /// 
17ce0 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
17cf0 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d  he column name..
17d00 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17d10 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 61  mary>..      Rea
17d20 64 20 3d 20 32 30 2c 0d 0a 0d 0a 20 20 20 20 20  d = 20,....     
17d30 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
17d40 20 20 20 20 20 20 2f 2f 2f 20 41 20 53 45 4c 45        /// A SELE
17d50 43 54 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  CT statement wil
17d60 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20  l be executed.  
17d70 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
17d80 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20  fic arguments.. 
17d90 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 62 6f 74       /// are bot
17da0 68 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a  h null values...
17db0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
17dc0 61 72 79 3e 0d 0a 20 20 20 20 20 20 53 65 6c 65  ary>..      Sele
17dd0 63 74 20 3d 20 32 31 2c 0d 0a 0d 0a 20 20 20 20  ct = 21,....    
17de0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
17df0 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61  .      /// A tra
17e00 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  nsaction will be
17e10 20 73 74 61 72 74 65 64 2c 20 63 6f 6d 6d 69 74   started, commit
17e20 74 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62  ted, or rolled b
17e30 61 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20 20  ack.  The..     
17e40 20 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63   /// action-spec
17e50 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61  ific arguments a
17e60 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  re the name of t
17e70 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 28 42 45  he operation (BE
17e80 47 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20  GIN,..      /// 
17e90 43 4f 4d 4d 49 54 2c 20 6f 72 20 52 4f 4c 4c 42  COMMIT, or ROLLB
17ea0 41 43 4b 29 20 61 6e 64 20 61 20 6e 75 6c 6c 20  ACK) and a null 
17eb0 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
17ec0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
17ed0 20 20 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 20      Transaction 
17ee0 3d 20 32 32 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 22,....      /
17ef0 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
17f00 20 20 20 20 2f 2f 2f 20 41 6e 20 55 50 44 41 54      /// An UPDAT
17f10 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  E statement will
17f20 20 62 65 20 65 78 65 63 75 74 65 64 2e 20 20 54   be executed.  T
17f30 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66  he action-specif
17f40 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a 20 20  ic arguments..  
17f50 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 68 65 20      /// are the 
17f60 74 61 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74  table name and t
17f70 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0d  he column name..
17f80 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
17f90 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 55 70 64  mary>..      Upd
17fa0 61 74 65 20 3d 20 32 33 2c 0d 0a 0d 0a 20 20 20  ate = 23,....   
17fb0 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
17fc0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 64 61  ..      /// A da
17fd0 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20 61  tabase will be a
17fe0 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 20 63  ttached to the c
17ff0 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 54 68 65 20  onnection.  The 
18000 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 0d  action-specific.
18010 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72 67 75 6d  .      /// argum
18020 65 6e 74 73 20 61 72 65 20 74 68 65 20 64 61 74  ents are the dat
18030 61 62 61 73 65 20 66 69 6c 65 20 6e 61 6d 65 20  abase file name 
18040 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65  and a null value
18050 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73  ...      /// </s
18060 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 41  ummary>..      A
18070 74 74 61 63 68 20 3d 20 32 34 2c 0d 0a 0d 0a 20  ttach = 24,.... 
18080 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18090 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
180a0 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65  database will be
180b0 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20 74   detached from t
180c0 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  he connection.  
180d0 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  The action-speci
180e0 66 69 63 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61  fic..      /// a
180f0 72 67 75 6d 65 6e 74 73 20 61 72 65 20 74 68 65  rguments are the
18100 20 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20 61   database name a
18110 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c 75 65 2e  nd a null value.
18120 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  ..      /// </su
18130 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 44 65  mmary>..      De
18140 74 61 63 68 20 3d 20 32 35 2c 0d 0a 0d 0a 20 20  tach = 25,....  
18150 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
18160 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65  >..      /// The
18170 20 73 63 68 65 6d 61 20 6f 66 20 61 20 74 61 62   schema of a tab
18180 6c 65 20 77 69 6c 6c 20 62 65 20 61 6c 74 65 72  le will be alter
18190 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e 2d  ed.  The action-
181a0 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65 6e  specific argumen
181b0 74 73 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 61 72  ts..      /// ar
181c0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6e  e the database n
181d0 61 6d 65 20 61 6e 64 20 74 68 65 20 74 61 62 6c  ame and the tabl
181e0 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 2f  e name...      /
181f0 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20  // </summary>.. 
18200 20 20 20 20 20 41 6c 74 65 72 54 61 62 6c 65 20       AlterTable 
18210 3d 20 32 36 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f  = 26,....      /
18220 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
18230 20 20 20 20 2f 2f 2f 20 41 6e 20 69 6e 64 65 78      /// An index
18240 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64   will be deleted
18250 20 61 6e 64 20 74 68 65 6e 20 72 65 63 72 65 61   and then recrea
18260 74 65 64 2e 20 20 54 68 65 20 61 63 74 69 6f 6e  ted.  The action
18270 2d 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 20  -specific..     
18280 20 2f 2f 2f 20 61 72 67 75 6d 65 6e 74 73 20 61   /// arguments a
18290 72 65 20 74 68 65 20 69 6e 64 65 78 20 6e 61 6d  re the index nam
182a0 65 20 61 6e 64 20 61 20 6e 75 6c 6c 20 76 61 6c  e and a null val
182b0 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ue...      /// <
182c0 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20  /summary>..     
182d0 20 52 65 69 6e 64 65 78 20 3d 20 32 37 2c 0d 0a   Reindex = 27,..
182e0 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
182f0 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
18300 20 41 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65   A table will be
18310 20 61 6e 61 6c 79 7a 65 64 20 74 6f 20 67 61 74   analyzed to gat
18320 68 65 72 73 20 73 74 61 74 69 73 74 69 63 73 20  hers statistics 
18330 61 62 6f 75 74 20 69 74 2e 20 20 54 68 65 0d 0a  about it.  The..
18340 20 20 20 20 20 20 2f 2f 2f 20 61 63 74 69 6f 6e        /// action
18350 2d 73 70 65 63 69 66 69 63 20 61 72 67 75 6d 65  -specific argume
18360 6e 74 73 20 61 72 65 20 74 68 65 20 74 61 62 6c  nts are the tabl
18370 65 20 6e 61 6d 65 20 61 6e 64 20 61 20 6e 75 6c  e name and a nul
18380 6c 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20  l value...      
18390 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
183a0 20 20 20 20 20 20 41 6e 61 6c 79 7a 65 20 3d 20        Analyze = 
183b0 32 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  28,....      ///
183c0 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20   <summary>..    
183d0 20 20 2f 2f 2f 20 41 20 76 69 72 74 75 61 6c 20    /// A virtual 
183e0 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 63 72  table will be cr
183f0 65 61 74 65 64 2e 20 20 54 68 65 20 61 63 74 69  eated.  The acti
18400 6f 6e 2d 73 70 65 63 69 66 69 63 20 61 72 67 75  on-specific argu
18410 6d 65 6e 74 73 20 61 72 65 0d 0a 20 20 20 20 20  ments are..     
18420 20 2f 2f 2f 20 74 68 65 20 74 61 62 6c 65 20 6e   /// the table n
18430 61 6d 65 20 61 6e 64 20 74 68 65 20 6d 6f 64 75  ame and the modu
18440 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20  le name...      
18450 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18460 20 20 20 20 20 20 43 72 65 61 74 65 56 74 61 62        CreateVtab
18470 6c 65 20 3d 20 32 39 2c 0d 0a 0d 0a 20 20 20 20  le = 29,....    
18480 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
18490 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 76 69 72  .      /// A vir
184a0 74 75 61 6c 20 74 61 62 6c 65 20 77 69 6c 6c 20  tual table will 
184b0 62 65 20 64 72 6f 70 70 65 64 2e 20 20 54 68 65  be dropped.  The
184c0 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69 63   action-specific
184d0 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0d 0a   arguments are..
184e0 20 20 20 20 20 20 2f 2f 2f 20 74 68 65 20 74 61        /// the ta
184f0 62 6c 65 20 6e 61 6d 65 20 61 6e 64 20 74 68 65  ble name and the
18500 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 2e 0d 0a 20   module name... 
18510 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61       /// </summa
18520 72 79 3e 0d 0a 20 20 20 20 20 20 44 72 6f 70 56  ry>..      DropV
18530 74 61 62 6c 65 20 3d 20 33 30 2c 0d 0a 0d 0a 20  table = 30,.... 
18540 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
18550 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20  y>..      /// A 
18560 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c  SQL function wil
18570 6c 20 62 65 20 63 61 6c 6c 65 64 2e 20 20 54 68  l be called.  Th
18580 65 20 61 63 74 69 6f 6e 2d 73 70 65 63 69 66 69  e action-specifi
18590 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  c arguments are 
185a0 61 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6e 75 6c  a..      /// nul
185b0 6c 20 76 61 6c 75 65 20 61 6e 64 20 74 68 65 20  l value and the 
185c0 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 2e 0d 0a  function name...
185d0 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
185e0 61 72 79 3e 0d 0a 20 20 20 20 20 20 46 75 6e 63  ary>..      Func
185f0 74 69 6f 6e 20 3d 20 33 31 2c 0d 0a 0d 0a 20 20  tion = 31,....  
18600 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
18610 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 73  >..      /// A s
18620 61 76 65 70 6f 69 6e 74 20 77 69 6c 6c 20 62 65  avepoint will be
18630 20 63 72 65 61 74 65 64 2c 20 72 65 6c 65 61 73   created, releas
18640 65 64 2c 20 6f 72 20 72 6f 6c 6c 65 64 20 62 61  ed, or rolled ba
18650 63 6b 2e 20 20 54 68 65 0d 0a 20 20 20 20 20 20  ck.  The..      
18660 2f 2f 2f 20 61 63 74 69 6f 6e 2d 73 70 65 63 69  /// action-speci
18670 66 69 63 20 61 72 67 75 6d 65 6e 74 73 20 61 72  fic arguments ar
18680 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  e the name of th
18690 65 20 6f 70 65 72 61 74 69 6f 6e 20 28 42 45 47  e operation (BEG
186a0 49 4e 2c 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 52  IN,..      /// R
186b0 45 4c 45 41 53 45 2c 20 6f 72 20 52 4f 4c 4c 42  ELEASE, or ROLLB
186c0 41 43 4b 29 20 61 6e 64 20 74 68 65 20 73 61 76  ACK) and the sav
186d0 65 70 6f 69 6e 74 20 6e 61 6d 65 2e 0d 0a 20 20  epoint name...  
186e0 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
186f0 79 3e 0d 0a 20 20 20 20 20 20 53 61 76 65 70 6f  y>..      Savepo
18700 69 6e 74 20 3d 20 33 32 2c 0d 0a 0d 0a 20 20 20  int = 32,....   
18710 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18720 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 41 20 72 65  ..      /// A re
18730 63 75 72 73 69 76 65 20 71 75 65 72 79 20 77 69  cursive query wi
18740 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 2e 20  ll be executed. 
18750 20 54 68 65 20 61 63 74 69 6f 6e 2d 73 70 65 63   The action-spec
18760 69 66 69 63 20 61 72 67 75 6d 65 6e 74 73 0d 0a  ific arguments..
18770 20 20 20 20 20 20 2f 2f 2f 20 61 72 65 20 74 77        /// are tw
18780 6f 20 6e 75 6c 6c 20 76 61 6c 75 65 73 2e 0d 0a  o null values...
18790 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d        /// </summ
187a0 61 72 79 3e 0d 0a 20 20 20 20 20 20 52 65 63 75  ary>..      Recu
187b0 72 73 69 76 65 20 3d 20 33 33 0d 0a 20 20 7d 0d  rsive = 33..  }.
187c0 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  ...  /// <summar
187d0 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 70 6f  y>..  /// The po
187e0 73 73 69 62 6c 65 20 72 65 74 75 72 6e 20 63 6f  ssible return co
187f0 64 65 73 20 66 6f 72 20 74 68 65 20 70 72 6f 67  des for the prog
18800 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 2e 0d 0a  ress callback...
18810 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18820 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20  ..  public enum 
18830 53 51 4c 69 74 65 50 72 6f 67 72 65 73 73 52 65  SQLiteProgressRe
18840 74 75 72 6e 43 6f 64 65 20 2f 2a 20 69 6e 74 20  turnCode /* int 
18850 2a 2f 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f  */..  {..      /
18860 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  // <summary>..  
18870 20 20 20 20 2f 2f 2f 20 54 68 65 20 6f 70 65 72      /// The oper
18880 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 63 6f 6e  ation should con
18890 74 69 6e 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  tinue...      //
188a0 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
188b0 20 20 20 20 43 6f 6e 74 69 6e 75 65 20 3d 20 30      Continue = 0
188c0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
188d0 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
188e0 2f 2f 2f 20 54 68 65 20 6f 70 65 72 61 74 69 6f  /// The operatio
188f0 6e 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 74 65  n should be inte
18900 72 72 75 70 74 65 64 2e 0d 0a 20 20 20 20 20 20  rrupted...      
18910 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
18920 20 20 20 20 20 20 49 6e 74 65 72 72 75 70 74 20        Interrupt 
18930 3d 20 31 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f  = 1..  }....  //
18940 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f  / <summary>..  /
18950 2f 2f 20 54 68 65 20 72 65 74 75 72 6e 20 63 6f  // The return co
18960 64 65 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  de for the curre
18970 6e 74 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65  nt call into the
18980 20 61 75 74 68 6f 72 69 7a 65 72 2e 0d 0a 20 20   authorizer...  
18990 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
189a0 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 53 51    public enum SQ
189b0 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 52 65  LiteAuthorizerRe
189c0 74 75 72 6e 43 6f 64 65 0d 0a 20 20 7b 0d 0a 20  turnCode..  {.. 
189d0 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72       /// <summar
189e0 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68  y>..      /// Th
189f0 65 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  e action will be
18a00 20 61 6c 6c 6f 77 65 64 2e 0d 0a 20 20 20 20 20   allowed...     
18a10 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d   /// </summary>.
18a20 0a 20 20 20 20 20 20 4f 6b 20 3d 20 30 2c 0d 0a  .      Ok = 0,..
18a30 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ..      /// <sum
18a40 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f  mary>..      ///
18a50 20 54 68 65 20 6f 76 65 72 61 6c 6c 20 61 63 74   The overall act
18a60 69 6f 6e 20 77 69 6c 6c 20 62 65 20 64 69 73 61  ion will be disa
18a70 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e 20 65 72  llowed and an er
18a80 72 6f 72 20 6d 65 73 73 61 67 65 20 77 69 6c 6c  ror message will
18a90 20 62 65 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 72   be..      /// r
18aa0 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65  eturned from the
18ab0 20 71 75 65 72 79 20 70 72 65 70 61 72 61 74 69   query preparati
18ac0 6f 6e 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20 20  on method...    
18ad0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18ae0 0d 0a 20 20 20 20 20 20 44 65 6e 79 20 3d 20 31  ..      Deny = 1
18af0 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c  ,....      /// <
18b00 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20  summary>..      
18b10 2f 2f 2f 20 54 68 65 20 73 70 65 63 69 66 69 63  /// The specific
18b20 20 61 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20   action will be 
18b30 64 69 73 61 6c 6c 6f 77 65 64 3b 20 68 6f 77 65  disallowed; howe
18b40 76 65 72 2c 20 74 68 65 20 6f 76 65 72 61 6c 6c  ver, the overall
18b50 20 61 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 2f   action..      /
18b60 2f 2f 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65  // will continue
18b70 2e 20 20 54 68 65 20 65 78 61 63 74 20 65 66 66  .  The exact eff
18b80 65 63 74 73 20 6f 66 20 74 68 69 73 20 72 65 74  ects of this ret
18b90 75 72 6e 20 63 6f 64 65 20 76 61 72 79 20 64 65  urn code vary de
18ba0 70 65 6e 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f  pending..      /
18bb0 2f 2f 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66  // on the specif
18bc0 69 63 20 61 63 74 69 6f 6e 2c 20 70 6c 65 61 73  ic action, pleas
18bd0 65 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 53  e refer to the S
18be0 51 4c 69 74 65 20 63 6f 72 65 20 6c 69 62 72 61  QLite core libra
18bf0 72 79 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 6f  ry..      /// do
18c00 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20  cumentation for 
18c10 66 75 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d  futher details..
18c20 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  .      /// </sum
18c30 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 49 67 6e  mary>..      Ign
18c40 6f 72 65 20 3d 20 32 0d 0a 20 20 7d 0d 0a 0d 0a  ore = 2..  }....
18c50 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
18c60 0a 20 20 2f 2f 2f 20 43 6c 61 73 73 20 75 73 65  .  /// Class use
18c70 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20  d internally to 
18c80 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 64 61  determine the da
18c90 74 61 74 79 70 65 20 6f 66 20 61 20 63 6f 6c 75  tatype of a colu
18ca0 6d 6e 20 69 6e 20 61 20 72 65 73 75 6c 74 73 65  mn in a resultse
18cb0 74 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  t..  /// </summa
18cc0 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20  ry>..  internal 
18cd0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c  sealed class SQL
18ce0 69 74 65 54 79 70 65 0d 0a 20 20 7b 0d 0a 20 20  iteType..  {..  
18cf0 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
18d00 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 44 62 54  .    /// The DbT
18d10 79 70 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d  ype of the colum
18d20 6e 2c 20 6f 72 20 44 62 54 79 70 65 2e 4f 62 6a  n, or DbType.Obj
18d30 65 63 74 20 69 66 20 69 74 20 63 61 6e 6e 6f 74  ect if it cannot
18d40 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 0d 0a   be determined..
18d50 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
18d60 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  y>..    internal
18d70 20 44 62 54 79 70 65 20 54 79 70 65 3b 0d 0a 20   DbType Type;.. 
18d80 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e     /// <summary>
18d90 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 61 66  ..    /// The af
18da0 66 69 6e 69 74 79 20 6f 66 20 61 20 63 6f 6c 75  finity of a colu
18db0 6d 6e 2c 20 75 73 65 64 20 66 6f 72 20 65 78 70  mn, used for exp
18dc0 72 65 73 73 69 6f 6e 73 20 6f 72 20 77 68 65 6e  ressions or when
18dd0 20 54 79 70 65 20 69 73 20 44 62 54 79 70 65 2e   Type is DbType.
18de0 4f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f 2f 20  Object..    /// 
18df0 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20  </summary>..    
18e00 69 6e 74 65 72 6e 61 6c 20 54 79 70 65 41 66 66  internal TypeAff
18e10 69 6e 69 74 79 20 41 66 66 69 6e 69 74 79 3b 0d  inity Affinity;.
18e20 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
18e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  //....    /// <s
18e80 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
18e90 20 43 6f 6e 73 74 72 75 63 74 73 20 61 20 64 65   Constructs a de
18ea0 66 61 75 6c 74 20 69 6e 73 74 61 6e 63 65 20 6f  fault instance o
18eb0 66 20 74 68 69 73 20 74 79 70 65 2e 0d 0a 20 20  f this type...  
18ec0 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
18ed0 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c  ..    public SQL
18ee0 69 74 65 54 79 70 65 28 29 0d 0a 20 20 20 20 7b  iteType()..    {
18ef0 0d 0a 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f  ..      // do no
18f00 74 68 69 6e 67 2e 0d 0a 20 20 20 20 7d 0d 0a 0d  thing...    }...
18f10 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
18f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f60 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d  ....    /// <sum
18f70 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43  mary>..    /// C
18f80 6f 6e 73 74 72 75 63 74 73 20 61 6e 20 69 6e 73  onstructs an ins
18f90 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 74 79  tance of this ty
18fa0 70 65 20 77 69 74 68 20 74 68 65 20 73 70 65 63  pe with the spec
18fb0 69 66 69 65 64 20 66 69 65 6c 64 20 76 61 6c 75  ified field valu
18fc0 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73  es...    /// </s
18fd0 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
18fe0 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 61 66   <param name="af
18ff0 66 69 6e 69 74 79 22 3e 0d 0a 20 20 20 20 2f 2f  finity">..    //
19000 2f 20 54 68 65 20 74 79 70 65 20 61 66 66 69 6e  / The type affin
19010 69 74 79 20 74 6f 20 75 73 65 20 66 6f 72 20 74  ity to use for t
19020 68 65 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 2e  he new instance.
19030 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61  ..    /// </para
19040 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72  m>..    /// <par
19050 61 6d 20 6e 61 6d 65 3d 22 74 79 70 65 22 3e 0d  am name="type">.
19060 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74  .    /// The dat
19070 61 62 61 73 65 20 74 79 70 65 20 74 6f 20 75 73  abase type to us
19080 65 20 66 6f 72 20 74 68 65 20 6e 65 77 20 69 6e  e for the new in
19090 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f  stance...    ///
190a0 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 70   </param>..    p
190b0 75 62 6c 69 63 20 53 51 4c 69 74 65 54 79 70 65  ublic SQLiteType
190c0 28 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66  (..      TypeAff
190d0 69 6e 69 74 79 20 61 66 66 69 6e 69 74 79 2c 0d  inity affinity,.
190e0 0a 20 20 20 20 20 20 44 62 54 79 70 65 20 74 79  .      DbType ty
190f0 70 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20  pe..      )..   
19100 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
19110 20 7b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e 41   {..      this.A
19120 66 66 69 6e 69 74 79 20 3d 20 61 66 66 69 6e 69  ffinity = affini
19130 74 79 3b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e  ty;..      this.
19140 54 79 70 65 20 3d 20 74 79 70 65 3b 0d 0a 20 20  Type = type;..  
19150 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f    }..  }....  //
19160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
191a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
191b0 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64   internal sealed
191c0 20 63 6c 61 73 73 20 53 51 4c 69 74 65 44 62 54   class SQLiteDbT
191d0 79 70 65 4d 61 70 0d 0a 20 20 20 20 20 20 3a 20  ypeMap..      : 
191e0 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
191f0 67 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d  g, SQLiteDbTypeM
19200 61 70 70 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20  apping>..  {..  
19210 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
19220 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
19230 70 72 69 76 61 74 65 20 44 69 63 74 69 6f 6e 61  private Dictiona
19240 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c 69 74  ry<DbType, SQLit
19250 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20  eDbTypeMapping> 
19260 72 65 76 65 72 73 65 3b 0d 0a 20 20 20 20 20 20  reverse;..      
19270 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
19280 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
192d0 0a 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50  .      #region P
192e0 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f  ublic Constructo
192f0 72 73 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63  rs..      public
19300 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
19310 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20  ()..          : 
19320 62 61 73 65 28 6e 65 77 20 54 79 70 65 4e 61 6d  base(new TypeNam
19330 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 28  eStringComparer(
19340 29 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  ))..      {..   
19350 20 20 20 20 20 20 20 72 65 76 65 72 73 65 20 3d         reverse =
19360 20 6e 65 77 20 44 69 63 74 69 6f 6e 61 72 79 3c   new Dictionary<
19370 44 62 54 79 70 65 2c 20 53 51 4c 69 74 65 44 62  DbType, SQLiteDb
19380 54 79 70 65 4d 61 70 70 69 6e 67 3e 28 29 3b 0d  TypeMapping>();.
19390 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  .      }....    
193a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
193f0 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69       public SQLi
19400 74 65 44 62 54 79 70 65 4d 61 70 28 0d 0a 20 20  teDbTypeMap(..  
19410 20 20 20 20 20 20 20 20 49 45 6e 75 6d 65 72 61          IEnumera
19420 62 6c 65 3c 53 51 4c 69 74 65 44 62 54 79 70 65  ble<SQLiteDbType
19430 4d 61 70 70 69 6e 67 3e 20 63 6f 6c 6c 65 63 74  Mapping> collect
19440 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 29  ion..          )
19450 0d 0a 20 20 20 20 20 20 20 20 20 20 3a 20 74 68  ..          : th
19460 69 73 28 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20  is()..      {.. 
19470 20 20 20 20 20 20 20 20 20 41 64 64 28 63 6f 6c           Add(col
19480 6c 65 63 74 69 6f 6e 29 3b 0d 0a 20 20 20 20 20  lection);..     
19490 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65   }..      #endre
194a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f  gion....      //
194b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
19500 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e   #region System.
19510 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65  Collections.Gene
19520 72 69 63 2e 44 69 63 74 69 6f 6e 61 72 79 20 22  ric.Dictionary "
19530 4f 76 65 72 72 69 64 65 73 22 0d 0a 20 20 20 20  Overrides"..    
19540 20 20 70 75 62 6c 69 63 20 6e 65 77 20 69 6e 74    public new int
19550 20 43 6c 65 61 72 28 29 0d 0a 20 20 20 20 20 20   Clear()..      
19560 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 6e 74  {..          int
19570 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a   result = 0;....
19580 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
19590 76 65 72 73 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  verse != null)..
195a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
195b0 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
195c0 74 20 2b 3d 20 72 65 76 65 72 73 65 2e 43 6f 75  t += reverse.Cou
195d0 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt;..           
195e0 20 20 20 72 65 76 65 72 73 65 2e 43 6c 65 61 72     reverse.Clear
195f0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ();..          }
19600 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65  ....          re
19610 73 75 6c 74 20 2b 3d 20 62 61 73 65 2e 43 6f 75  sult += base.Cou
19620 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 62  nt;..          b
19630 61 73 65 2e 43 6c 65 61 72 28 29 3b 0d 0a 0d 0a  ase.Clear();....
19640 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
19650 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
19660 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67  }..      #endreg
19670 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f  ion....      ///
19680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
196c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
196d0 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 44 62  #region SQLiteDb
196e0 54 79 70 65 4d 61 70 70 69 6e 67 20 48 65 6c 70  TypeMapping Help
196f0 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  er Methods..    
19700 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64    public void Ad
19710 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45  d(..          IE
19720 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65  numerable<SQLite
19730 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63  DbTypeMapping> c
19740 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20  ollection..     
19750 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 7b 0d       )..      {.
19760 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63  .          if (c
19770 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e 75 6c  ollection == nul
19780 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
19790 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75    throw new Argu
197a0 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f  mentNullExceptio
197b0 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 29 3b  n("collection");
197c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 66 6f  ....          fo
197d0 72 65 61 63 68 20 28 53 51 4c 69 74 65 44 62 54  reach (SQLiteDbT
197e0 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 6d 20  ypeMapping item 
197f0 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a  in collection)..
19800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 64                Ad
19810 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20  d(item);..      
19820 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
19830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19870 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
19880 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28 53 51  blic void Add(SQ
19890 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e  LiteDbTypeMappin
198a0 67 20 69 74 65 6d 29 0d 0a 20 20 20 20 20 20 7b  g item)..      {
198b0 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28  ..          if (
198c0 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  item == null).. 
198d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
198e0 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e  ow new ArgumentN
198f0 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 69 74  ullException("it
19900 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  em");....       
19910 20 20 20 69 66 20 28 69 74 65 6d 2e 74 79 70 65     if (item.type
19920 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
19930 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
19940 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 45  ow new ArgumentE
19950 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d 20 74  xception("item t
19960 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e 6f 74 20  ype name cannot 
19970 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a 20 20  be null");....  
19980 20 20 20 20 20 20 20 20 62 61 73 65 2e 41 64 64          base.Add
19990 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 2c 20  (item.typeName, 
199a0 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  item);....      
199b0 20 20 20 20 69 66 20 28 69 74 65 6d 2e 70 72 69      if (item.pri
199c0 6d 61 72 79 29 0d 0a 20 20 20 20 20 20 20 20 20  mary)..         
199d0 20 20 20 20 20 72 65 76 65 72 73 65 2e 41 64 64       reverse.Add
199e0 28 69 74 65 6d 2e 64 61 74 61 54 79 70 65 2c 20  (item.dataType, 
199f0 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 7d 0d  item);..      }.
19a00 0a 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f  .      #endregio
19a10 6e 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  n....      /////
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 23 72  ////....      #r
19a70 65 67 69 6f 6e 20 44 62 54 79 70 65 20 48 65 6c  egion DbType Hel
19a80 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  per Methods..   
19a90 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 43     public bool C
19aa0 6f 6e 74 61 69 6e 73 4b 65 79 28 44 62 54 79 70  ontainsKey(DbTyp
19ab0 65 20 6b 65 79 29 0d 0a 20 20 20 20 20 20 7b 0d  e key)..      {.
19ac0 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72  .          if (r
19ad0 65 76 65 72 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d  everse == null).
19ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  .              r
19af0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
19b00 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
19b10 20 72 65 76 65 72 73 65 2e 43 6f 6e 74 61 69 6e   reverse.Contain
19b20 73 4b 65 79 28 6b 65 79 29 3b 0d 0a 20 20 20 20  sKey(key);..    
19b30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f    }....      ///
19b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19b90 70 75 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47  public bool TryG
19ba0 65 74 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b  etValue(DbType k
19bb0 65 79 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62  ey, out SQLiteDb
19bc0 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75  TypeMapping valu
19bd0 65 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20  e)..      {..   
19be0 20 20 20 20 20 20 20 69 66 20 28 72 65 76 65 72         if (rever
19bf0 73 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  se == null)..   
19c00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19c10 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20          value = 
19c20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
19c30 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
19c40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  e;..          }.
19c50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 74  ...          ret
19c60 75 72 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47  urn reverse.TryG
19c70 65 74 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74  etValue(key, out
19c80 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20   value);..      
19c90 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f  }....      /////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ce0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75  ////....      pu
19cf0 62 6c 69 63 20 62 6f 6f 6c 20 52 65 6d 6f 76 65  blic bool Remove
19d00 28 44 62 54 79 70 65 20 6b 65 79 29 0d 0a 20 20  (DbType key)..  
19d10 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19d20 20 69 66 20 28 72 65 76 65 72 73 65 20 3d 3d 20   if (reverse == 
19d30 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
19d40 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
19d50 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
19d60 72 65 74 75 72 6e 20 72 65 76 65 72 73 65 2e 52  return reverse.R
19d70 65 6d 6f 76 65 28 6b 65 79 29 3b 0d 0a 20 20 20  emove(key);..   
19d80 20 20 20 7d 0d 0a 20 20 20 20 20 20 23 65 6e 64     }..      #end
19d90 72 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 0d 0a 20  region..  }.... 
19da0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19df0 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
19e00 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
19e10 44 62 54 79 70 65 4d 61 70 70 69 6e 67 0d 0a 20  DbTypeMapping.. 
19e20 20 7b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c   {..    internal
19e30 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70   SQLiteDbTypeMap
19e40 70 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 73  ping(..        s
19e50 74 72 69 6e 67 20 6e 65 77 54 79 70 65 4e 61 6d  tring newTypeNam
19e60 65 2c 0d 0a 20 20 20 20 20 20 20 20 44 62 54 79  e,..        DbTy
19e70 70 65 20 6e 65 77 44 61 74 61 54 79 70 65 2c 0d  pe newDataType,.
19e80 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 65  .        bool ne
19e90 77 50 72 69 6d 61 72 79 0d 0a 20 20 20 20 20 20  wPrimary..      
19ea0 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20    )..    {..    
19eb0 20 20 74 79 70 65 4e 61 6d 65 20 3d 20 6e 65 77    typeName = new
19ec0 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  TypeName;..     
19ed0 20 64 61 74 61 54 79 70 65 20 3d 20 6e 65 77 44   dataType = newD
19ee0 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20  ataType;..      
19ef0 70 72 69 6d 61 72 79 20 3d 20 6e 65 77 50 72 69  primary = newPri
19f00 6d 61 72 79 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a  mary;..    }....
19f10 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72      internal str
19f20 69 6e 67 20 74 79 70 65 4e 61 6d 65 3b 0d 0a 20  ing typeName;.. 
19f30 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79     internal DbTy
19f40 70 65 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20  pe dataType;..  
19f50 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20    internal bool 
19f60 70 72 69 6d 61 72 79 3b 0d 0a 20 20 7d 0d 0a 0d  primary;..  }...
19f70 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c  .  internal seal
19f80 65 64 20 63 6c 61 73 73 20 54 79 70 65 4e 61 6d  ed class TypeNam
19f90 65 53 74 72 69 6e 67 43 6f 6d 70 61 72 65 72 20  eStringComparer 
19fa0 3a 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61  : IEqualityCompa
19fb0 72 65 72 3c 73 74 72 69 6e 67 3e 2c 20 49 43 6f  rer<string>, ICo
19fc0 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e 0d 0a  mparer<string>..
19fd0 20 20 7b 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e    {..    #region
19fe0 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61 72   IEqualityCompar
19ff0 65 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65  er<string> Membe
1a000 72 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 62  rs..    public b
1a010 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20  ool Equals(..   
1a020 20 20 20 73 74 72 69 6e 67 20 6c 65 66 74 2c 0d     string left,.
1a030 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 69  .      string ri
1a040 67 68 74 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20  ght..      )..  
1a050 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72    {..      retur
1a060 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
1a070 6c 65 66 74 2c 20 72 69 67 68 74 2c 20 53 74 72  left, right, Str
1a080 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
1a090 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29  dinalIgnoreCase)
1a0a0 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
1a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a100 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 47 65     public int Ge
1a110 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20  tHashCode(..    
1a120 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a    string value..
1a130 20 20 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a        )..    {..
1a140 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1a150 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 6f 6e 6c  // NOTE: The onl
1a160 79 20 74 68 69 6e 67 20 74 68 61 74 20 77 65 20  y thing that we 
1a170 6d 75 73 74 20 67 75 61 72 61 6e 74 65 65 20 68  must guarantee h
1a180 65 72 65 2c 20 61 63 63 6f 72 64 69 6e 67 0d 0a  ere, according..
1a190 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
1a1a0 6f 20 74 68 65 20 4d 53 44 4e 20 64 6f 63 75 6d  o the MSDN docum
1a1b0 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 49 45 71  entation for IEq
1a1c0 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 2c 20  ualityComparer, 
1a1d0 69 73 0d 0a 20 20 20 20 20 20 2f 2f 20 20 20 20  is..      //    
1a1e0 20 20 20 74 68 61 74 20 66 6f 72 20 74 77 6f 20     that for two 
1a1f0 67 69 76 65 6e 20 73 74 72 69 6e 67 73 2c 20 69  given strings, i
1a200 66 20 45 71 75 61 6c 73 20 72 65 74 75 72 6e 20  f Equals return 
1a210 74 72 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20  true then..     
1a220 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 74 77   //       the tw
1a230 6f 20 73 74 72 69 6e 67 73 20 6d 75 73 74 20 68  o strings must h
1a240 61 73 68 20 74 6f 20 74 68 65 20 73 61 6d 65 20  ash to the same 
1a250 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f  value...      //
1a260 0d 0a 20 20 20 20 20 20 69 66 20 28 76 61 6c 75  ..      if (valu
1a270 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
1a280 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e      return Strin
1a290 67 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61  gComparer.Ordina
1a2a0 6c 49 67 6e 6f 72 65 43 61 73 65 2e 47 65 74 48  lIgnoreCase.GetH
1a2b0 61 73 68 43 6f 64 65 28 76 61 6c 75 65 29 3b 0d  ashCode(value);.
1a2c0 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20  .      else..   
1a2d0 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41       throw new A
1a2e0 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70  rgumentNullExcep
1a2f0 74 69 6f 6e 28 22 76 61 6c 75 65 22 29 3b 0d 0a  tion("value");..
1a300 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1a310 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a360 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1a370 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70 61 72 65  #region ICompare
1a380 72 3c 73 74 72 69 6e 67 3e 20 4d 65 6d 62 65 72  r<string> Member
1a390 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69 6e  s..    public in
1a3a0 74 20 43 6f 6d 70 61 72 65 28 0d 0a 20 20 20 20  t Compare(..    
1a3b0 20 20 73 74 72 69 6e 67 20 78 2c 0d 0a 20 20 20    string x,..   
1a3c0 20 20 20 73 74 72 69 6e 67 20 79 0d 0a 20 20 20     string y..   
1a3d0 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20     )..    {..   
1a3e0 20 20 20 69 66 20 28 28 78 20 3d 3d 20 6e 75 6c     if ((x == nul
1a3f0 6c 29 20 26 26 20 28 79 20 3d 3d 20 6e 75 6c 6c  l) && (y == null
1a400 29 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75  ))..        retu
1a410 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 65 6c 73  rn 0;..      els
1a420 65 20 69 66 20 28 78 20 3d 3d 20 6e 75 6c 6c 29  e if (x == null)
1a430 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
1a440 20 2d 31 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65   -1;..      else
1a450 20 69 66 20 28 79 20 3d 3d 20 6e 75 6c 6c 29 0d   if (y == null).
1a460 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
1a470 31 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 0d 0a  1;..      else..
1a480 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 78          return x
1a490 2e 43 6f 6d 70 61 72 65 54 6f 28 79 29 3b 0d 0a  .CompareTo(y);..
1a4a0 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1a4b0 65 67 69 6f 6e 0d 0a 20 20 7d 0d 0a 7d 0d 0a     egion..  }..}..