0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44 *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50 O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69 rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65 bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 0d 0a 20 soft.com).. *..
00b0: 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68 * Released to th
00c0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c e public domain,
00d0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e use at your own
00e0: 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a 2a risk!.. *******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0120: 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65 20 */....namespace
0130: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 System.Data.SQLi
0140: 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20 53 te..{.. using S
0150: 79 73 74 65 6d 3b 0d 0a 0d 0a 23 69 66 20 21 4e ystem;....#if !N
0160: 45 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 ET_COMPACT_20 &&
0170: 20 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a TRACE_WARNING..
0180: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 using System.D
0190: 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a 23 65 6e iagnostics;..#en
01a0: 64 69 66 0d 0a 0d 0a 20 20 75 73 69 6e 67 20 53 dif.... using S
01b0: 79 73 74 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e ystem.Runtime.In
01c0: 74 65 72 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a teropServices;..
01d0: 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 43 using System.C
01e0: 6f 6c 6c 65 63 74 69 6f 6e 73 2e 47 65 6e 65 72 ollections.Gener
01f0: 69 63 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 ic;.. using Sys
0200: 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74 69 6f tem.Globalizatio
0210: 6e 3b 0d 0a 20 20 75 73 69 6e 67 20 53 79 73 74 n;.. using Syst
0220: 65 6d 2e 54 65 78 74 3b 0d 0a 0d 0a 20 20 2f 2f em.Text;.... //
0230: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f / <summary>.. /
0240: 2f 2f 20 54 68 69 73 20 62 61 73 65 20 63 6c 61 // This base cla
0250: 73 73 20 70 72 6f 76 69 64 65 73 20 64 61 74 61 ss provides data
0260: 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 20 type conversion
0270: 73 65 72 76 69 63 65 73 20 66 6f 72 20 74 68 65 services for the
0280: 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 72 SQLite provider
0290: 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 ... /// </summa
02a0: 72 79 3e 0d 0a 20 20 70 75 62 6c 69 63 20 61 62 ry>.. public ab
02b0: 73 74 72 61 63 74 20 63 6c 61 73 73 20 53 51 4c stract class SQL
02c0: 69 74 65 43 6f 6e 76 65 72 74 0d 0a 20 20 7b 0d iteConvert.. {.
02d0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
02e0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 y>.. /// The
02f0: 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 55 6e value for the Un
0300: 69 78 20 65 70 6f 63 68 20 28 65 2e 67 2e 20 4a ix epoch (e.g. J
0310: 61 6e 75 61 72 79 20 31 2c 20 31 39 37 30 20 61 anuary 1, 1970 a
0320: 74 20 6d 69 64 6e 69 67 68 74 2c 20 69 6e 20 55 t midnight, in U
0330: 54 43 29 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f TC)... /// </
0340: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 summary>.. pr
0350: 6f 74 65 63 74 65 64 20 73 74 61 74 69 63 20 72 otected static r
0360: 65 61 64 6f 6e 6c 79 20 44 61 74 65 54 69 6d 65 eadonly DateTime
0370: 20 55 6e 69 78 45 70 6f 63 68 20 3d 0d 0a 20 20 UnixEpoch =..
0380: 20 20 20 20 20 20 6e 65 77 20 44 61 74 65 54 69 new DateTi
0390: 6d 65 28 31 39 37 30 2c 20 31 2c 20 31 2c 20 30 me(1970, 1, 1, 0
03a0: 2c 20 30 2c 20 30 2c 20 44 61 74 65 54 69 6d 65 , 0, 0, DateTime
03b0: 4b 69 6e 64 2e 55 74 63 29 3b 0d 0a 0d 0a 20 20 Kind.Utc);....
03c0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
03d0: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 76 61 6c . /// The val
03e0: 75 65 20 6f 66 20 74 68 65 20 4f 4c 45 20 41 75 ue of the OLE Au
03f0: 74 6f 6d 61 74 69 6f 6e 20 65 70 6f 63 68 20 72 tomation epoch r
0400: 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 61 20 epresented as a
0410: 4a 75 6c 69 61 6e 20 64 61 79 2e 0d 0a 20 20 20 Julian day...
0420: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d /// </summary>.
0430: 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 . private sta
0440: 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 64 6f 75 tic readonly dou
0450: 62 6c 65 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f ble OleAutomatio
0460: 6e 45 70 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 nEpochAsJulianDa
0470: 79 20 3d 20 32 34 31 35 30 31 38 2e 35 3b 0d 0a y = 2415018.5;..
0480: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
0490: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 ry>.. /// The
04a0: 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 66 format string f
04b0: 6f 72 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 or DateTime valu
04c0: 65 73 20 77 68 65 6e 20 75 73 69 6e 67 20 74 68 es when using th
04d0: 65 20 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 e InvariantCultu
04e0: 72 65 20 6f 72 20 43 75 72 72 65 6e 74 43 75 6c re or CurrentCul
04f0: 74 75 72 65 20 66 6f 72 6d 61 74 73 2e 0d 0a 20 ture formats...
0500: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
0510: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 63 >.. private c
0520: 6f 6e 73 74 20 73 74 72 69 6e 67 20 46 75 6c 6c onst string Full
0530: 46 6f 72 6d 61 74 20 3d 20 22 79 79 79 79 2d 4d Format = "yyyy-M
0540: 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e 66 66 M-ddTHH:mm:ss.ff
0550: 66 66 66 66 66 4b 22 3b 0d 0a 0d 0a 20 20 20 20 fffffK";....
0560: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
0570: 20 20 20 2f 2f 2f 20 41 6e 20 61 72 72 61 79 20 /// An array
0580: 6f 66 20 49 53 4f 2d 38 36 30 31 20 44 61 74 65 of ISO-8601 Date
0590: 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 74 68 61 Time formats tha
05a0: 74 20 77 65 20 73 75 70 70 6f 72 74 20 70 61 72 t we support par
05b0: 73 69 6e 67 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c sing... /// <
05c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 /summary>.. p
05d0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 rivate static st
05e0: 72 69 6e 67 5b 5d 20 5f 64 61 74 65 74 69 6d 65 ring[] _datetime
05f0: 46 6f 72 6d 61 74 73 20 3d 20 6e 65 77 20 73 74 Formats = new st
0600: 72 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 20 20 ring[] {..
0610: 22 54 48 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 "THHmmssK",..
0620: 20 20 20 22 54 48 48 6d 6d 4b 22 2c 0d 0a 20 20 "THHmmK",..
0630: 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 2e 46 46 "HH:mm:ss.FF
0640: 46 46 46 46 46 4b 22 2c 0d 0a 20 20 20 20 20 20 FFFFFK",..
0650: 22 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a 20 20 "HH:mm:ssK",..
0660: 20 20 20 20 22 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 "HH:mmK",..
0670: 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 "yyyy-MM-dd
0680: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 HH:mm:ss.FFFFFF
0690: 46 4b 22 2c 20 2f 2a 20 4e 4f 54 45 3a 20 55 54 FK", /* NOTE: UT
06a0: 43 20 64 65 66 61 75 6c 74 20 28 35 29 2e 20 2a C default (5). *
06b0: 2f 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d /.. "yyyy-M
06c0: 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 4b 22 2c M-dd HH:mm:ssK",
06d0: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d .. "yyyy-MM
06e0: 2d 64 64 20 48 48 3a 6d 6d 4b 22 2c 0d 0a 20 20 -dd HH:mmK",..
06f0: 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 "yyyy-MM-ddT
0700: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 HH:mm:ss.FFFFFFF
0710: 4b 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 K",.. "yyyy
0720: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 22 2c 0d -MM-ddTHH:mmK",.
0730: 0a 20 20 20 20 20 20 22 79 79 79 79 2d 4d 4d 2d . "yyyy-MM-
0740: 64 64 54 48 48 3a 6d 6d 3a 73 73 4b 22 2c 0d 0a ddTHH:mm:ssK",..
0750: 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 64 48 "yyyyMMddH
0760: 48 6d 6d 73 73 4b 22 2c 0d 0a 20 20 20 20 20 20 HmmssK",..
0770: 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d 4b 22 2c "yyyyMMddHHmmK",
0780: 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d 4d 64 .. "yyyyMMd
0790: 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 46 4b dTHHmmssFFFFFFFK
07a0: 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 6d 6d ",.. "THHmm
07b0: 73 73 22 2c 0d 0a 20 20 20 20 20 20 22 54 48 48 ss",.. "THH
07c0: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a mm",.. "HH:
07d0: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 22 2c 0d mm:ss.FFFFFFF",.
07e0: 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d 3a 73 73 . "HH:mm:ss
07f0: 22 2c 0d 0a 20 20 20 20 20 20 22 48 48 3a 6d 6d ",.. "HH:mm
0800: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 2d ",.. "yyyy-
0810: 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 MM-dd HH:mm:ss.F
0820: 46 46 46 46 46 46 22 2c 20 2f 2a 20 4e 4f 54 45 FFFFFF", /* NOTE
0830: 3a 20 4e 6f 6e 2d 55 54 43 20 64 65 66 61 75 6c : Non-UTC defaul
0840: 74 20 28 31 39 29 2e 20 2a 2f 0d 0a 20 20 20 20 t (19). */..
0850: 20 20 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 "yyyy-MM-dd HH
0860: 3a 6d 6d 3a 73 73 22 2c 0d 0a 20 20 20 20 20 20 :mm:ss",..
0870: 22 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d "yyyy-MM-dd HH:m
0880: 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 m",.. "yyyy
0890: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e -MM-ddTHH:mm:ss.
08a0: 46 46 46 46 46 46 46 22 2c 0d 0a 20 20 20 20 20 FFFFFFF",..
08b0: 20 22 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a "yyyy-MM-ddTHH:
08c0: 6d 6d 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 mm",.. "yyy
08d0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 y-MM-ddTHH:mm:ss
08e0: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d ",.. "yyyyM
08f0: 4d 64 64 48 48 6d 6d 73 73 22 2c 0d 0a 20 20 20 MddHHmmss",..
0900: 20 20 20 22 79 79 79 79 4d 4d 64 64 48 48 6d 6d "yyyyMMddHHmm
0910: 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 4d ",.. "yyyyM
0920: 4d 64 64 54 48 48 6d 6d 73 73 46 46 46 46 46 46 MddTHHmmssFFFFFF
0930: 46 22 2c 0d 0a 20 20 20 20 20 20 22 79 79 79 79 F",.. "yyyy
0940: 2d 4d 4d 2d 64 64 22 2c 0d 0a 20 20 20 20 20 20 -MM-dd",..
0950: 22 79 79 79 79 4d 4d 64 64 22 2c 0d 0a 20 20 20 "yyyyMMdd",..
0960: 20 20 20 22 79 79 2d 4d 4d 2d 64 64 22 0d 0a 20 "yy-MM-dd"..
0970: 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f };.... ///
0980: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
0990: 2f 2f 2f 20 54 68 65 20 69 6e 74 65 72 6e 61 6c /// The internal
09a0: 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 20 default format
09b0: 66 6f 72 20 55 54 43 20 44 61 74 65 54 69 6d 65 for UTC DateTime
09c0: 20 76 61 6c 75 65 73 20 77 68 65 6e 20 63 6f 6e values when con
09d0: 76 65 72 74 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f verting.. ///
09e0: 20 74 6f 20 61 20 73 74 72 69 6e 67 2e 0d 0a 20 to a string...
09f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
0a00: 3e 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 >.. private s
0a10: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73 tatic readonly s
0a20: 74 72 69 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 tring _datetimeF
0a30: 6f 72 6d 61 74 55 74 63 20 3d 20 5f 64 61 74 65 ormatUtc = _date
0a40: 74 69 6d 65 46 6f 72 6d 61 74 73 5b 35 5d 3b 0d timeFormats[5];.
0a50: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d ... /// <summ
0a60: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 ary>.. /// Th
0a70: 65 20 69 6e 74 65 72 6e 61 6c 20 64 65 66 61 75 e internal defau
0a80: 6c 74 20 66 6f 72 6d 61 74 20 66 6f 72 20 6c 6f lt format for lo
0a90: 63 61 6c 20 44 61 74 65 54 69 6d 65 20 76 61 6c cal DateTime val
0aa0: 75 65 73 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 ues when convert
0ab0: 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 74 6f 20 ing.. /// to
0ac0: 61 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20 20 2f a string... /
0ad0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
0ae0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 private stati
0af0: 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e c readonly strin
0b00: 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 g _datetimeForma
0b10: 74 4c 6f 63 61 6c 20 3d 20 5f 64 61 74 65 74 69 tLocal = _dateti
0b20: 6d 65 46 6f 72 6d 61 74 73 5b 31 39 5d 3b 0d 0a meFormats[19];..
0b30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
0b40: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 6e 20 ry>.. /// An
0b50: 55 54 46 2d 38 20 45 6e 63 6f 64 69 6e 67 20 69 UTF-8 Encoding i
0b60: 6e 73 74 61 6e 63 65 2c 20 73 6f 20 77 65 20 63 nstance, so we c
0b70: 61 6e 20 63 6f 6e 76 65 72 74 20 73 74 72 69 6e an convert strin
0b80: 67 73 20 74 6f 20 61 6e 64 20 66 72 6f 6d 20 55 gs to and from U
0b90: 54 46 2d 38 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f TF-8.. /// </
0ba0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70 72 summary>.. pr
0bb0: 69 76 61 74 65 20 73 74 61 74 69 63 20 45 6e 63 ivate static Enc
0bc0: 6f 64 69 6e 67 20 5f 75 74 66 38 20 3d 20 6e 65 oding _utf8 = ne
0bd0: 77 20 55 54 46 38 45 6e 63 6f 64 69 6e 67 28 29 w UTF8Encoding()
0be0: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d ;.. /// <summ
0bf0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 ary>.. /// Th
0c00: 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 e default DateTi
0c10: 6d 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 me format for th
0c20: 69 73 20 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 is instance...
0c30: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e /// </summary>
0c40: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 .. internal S
0c50: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 QLiteDateFormats
0c60: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 _datetimeFormat
0c70: 3b 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d ;.. /// <summ
0c80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 ary>.. /// Th
0c90: 65 20 64 65 66 61 75 6c 74 20 44 61 74 65 54 69 e default DateTi
0ca0: 6d 65 4b 69 6e 64 20 66 6f 72 20 74 68 69 73 20 meKind for this
0cb0: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f instance... /
0cc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
0cd0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 44 61 74 65 internal Date
0ce0: 54 69 6d 65 4b 69 6e 64 20 5f 64 61 74 65 74 69 TimeKind _dateti
0cf0: 6d 65 4b 69 6e 64 3b 0d 0a 20 20 20 20 2f 2f 2f meKind;.. ///
0d00: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
0d10: 2f 2f 2f 20 54 68 65 20 64 65 66 61 75 6c 74 20 /// The default
0d20: 44 61 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 DateTime format
0d30: 73 74 72 69 6e 67 20 66 6f 72 20 74 68 69 73 20 string for this
0d40: 69 6e 73 74 61 6e 63 65 2e 0d 0a 20 20 20 20 2f instance... /
0d50: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
0d60: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 72 69 internal stri
0d70: 6e 67 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d ng _datetimeForm
0d80: 61 74 53 74 72 69 6e 67 20 3d 20 6e 75 6c 6c 3b atString = null;
0d90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
0da0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 6e 69 ry>.. /// Ini
0db0: 74 69 61 6c 69 7a 65 73 20 74 68 65 20 63 6f 6e tializes the con
0dc0: 76 65 72 73 69 6f 6e 20 63 6c 61 73 73 0d 0a 20 version class..
0dd0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
0de0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 >.. /// <para
0df0: 6d 20 6e 61 6d 65 3d 22 66 6d 74 22 3e 54 68 65 m name="fmt">The
0e00: 20 64 65 66 61 75 6c 74 20 64 61 74 65 2f 74 69 default date/ti
0e10: 6d 65 20 66 6f 72 6d 61 74 20 74 6f 20 75 73 65 me format to use
0e20: 20 66 6f 72 20 74 68 69 73 20 69 6e 73 74 61 6e for this instan
0e30: 63 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 ce</param>..
0e40: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d /// <param name=
0e50: 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 74 65 54 "kind">The DateT
0e60: 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 65 2e 3c imeKind to use.<
0e70: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f /param>.. ///
0e80: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 66 6d <param name="fm
0e90: 74 53 74 72 69 6e 67 22 3e 54 68 65 20 44 61 74 tString">The Dat
0ea0: 65 54 69 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 eTime format str
0eb0: 69 6e 67 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 ing to use.</par
0ec0: 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 am>.. interna
0ed0: 6c 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 28 l SQLiteConvert(
0ee0: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 .. SQLite
0ef0: 44 61 74 65 46 6f 72 6d 61 74 73 20 66 6d 74 2c DateFormats fmt,
0f00: 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 69 .. DateTi
0f10: 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 meKind kind,..
0f20: 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6d 74 string fmt
0f30: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 String..
0f40: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
0f50: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 20 _datetimeFormat
0f60: 3d 20 66 6d 74 3b 0d 0a 20 20 20 20 20 20 5f 64 = fmt;.. _d
0f70: 61 74 65 74 69 6d 65 4b 69 6e 64 20 3d 20 6b 69 atetimeKind = ki
0f80: 6e 64 3b 0d 0a 20 20 20 20 20 20 5f 64 61 74 65 nd;.. _date
0f90: 74 69 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 timeFormatString
0fa0: 20 3d 20 66 6d 74 53 74 72 69 6e 67 3b 0d 0a 20 = fmtString;..
0fb0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 72 65 67 }.... #reg
0fc0: 69 6f 6e 20 55 54 46 2d 38 20 43 6f 6e 76 65 72 ion UTF-8 Conver
0fd0: 73 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d 0a sion Functions..
0fe0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 /// <summary
0ff0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 >.. /// Conve
1000: 72 74 73 20 61 20 73 74 72 69 6e 67 20 74 6f 20 rts a string to
1010: 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 a UTF-8 encoded
1020: 62 79 74 65 20 61 72 72 61 79 20 73 69 7a 65 64 byte array sized
1030: 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 20 6e 75 to include a nu
1040: 6c 6c 2d 74 65 72 6d 69 6e 61 74 69 6e 67 20 63 ll-terminating c
1050: 68 61 72 61 63 74 65 72 2e 0d 0a 20 20 20 20 2f haracter... /
1060: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
1070: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
1080: 6d 65 3d 22 73 6f 75 72 63 65 54 65 78 74 22 3e me="sourceText">
1090: 54 68 65 20 73 74 72 69 6e 67 20 74 6f 20 63 6f The string to co
10a0: 6e 76 65 72 74 20 74 6f 20 55 54 46 2d 38 3c 2f nvert to UTF-8</
10b0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 param>.. ///
10c0: 3c 72 65 74 75 72 6e 73 3e 41 20 62 79 74 65 20 <returns>A byte
10d0: 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 array containing
10e0: 20 74 68 65 20 63 6f 6e 76 65 72 74 65 64 20 73 the converted s
10f0: 74 72 69 6e 67 20 70 6c 75 73 20 61 6e 20 65 78 tring plus an ex
1100: 74 72 61 20 30 20 74 65 72 6d 69 6e 61 74 69 6e tra 0 terminatin
1110: 67 20 62 79 74 65 20 61 74 20 74 68 65 20 65 6e g byte at the en
1120: 64 20 6f 66 20 74 68 65 20 61 72 72 61 79 2e 3c d of the array.<
1130: 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 /returns>.. p
1140: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 79 74 ublic static byt
1150: 65 5b 5d 20 54 6f 55 54 46 38 28 73 74 72 69 6e e[] ToUTF8(strin
1160: 67 20 73 6f 75 72 63 65 54 65 78 74 29 0d 0a 20 g sourceText)..
1170: 20 20 20 7b 0d 0a 20 20 20 20 20 20 42 79 74 65 {.. Byte
1180: 5b 5d 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 [] byteArray;..
1190: 20 20 20 20 20 69 6e 74 20 6e 6c 65 6e 20 3d 20 int nlen =
11a0: 5f 75 74 66 38 2e 47 65 74 42 79 74 65 43 6f 75 _utf8.GetByteCou
11b0: 6e 74 28 73 6f 75 72 63 65 54 65 78 74 29 20 2b nt(sourceText) +
11c0: 20 31 3b 0d 0a 0d 0a 20 20 20 20 20 20 62 79 74 1;.... byt
11d0: 65 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 eArray = new byt
11e0: 65 5b 6e 6c 65 6e 5d 3b 0d 0a 20 20 20 20 20 20 e[nlen];..
11f0: 6e 6c 65 6e 20 3d 20 5f 75 74 66 38 2e 47 65 74 nlen = _utf8.Get
1200: 42 79 74 65 73 28 73 6f 75 72 63 65 54 65 78 74 Bytes(sourceText
1210: 2c 20 30 2c 20 73 6f 75 72 63 65 54 65 78 74 2e , 0, sourceText.
1220: 4c 65 6e 67 74 68 2c 20 62 79 74 65 41 72 72 61 Length, byteArra
1230: 79 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 62 79 y, 0);.. by
1240: 74 65 41 72 72 61 79 5b 6e 6c 65 6e 5d 20 3d 20 teArray[nlen] =
1250: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 0;.... retu
1260: 72 6e 20 62 79 74 65 41 72 72 61 79 3b 0d 0a 20 rn byteArray;..
1270: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 }.... ///
1280: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f <summary>.. /
1290: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 44 61 74 // Convert a Dat
12a0: 65 54 69 6d 65 20 74 6f 20 61 20 55 54 46 2d 38 eTime to a UTF-8
12b0: 20 65 6e 63 6f 64 65 64 2c 20 7a 65 72 6f 2d 74 encoded, zero-t
12c0: 65 72 6d 69 6e 61 74 65 64 20 62 79 74 65 20 61 erminated byte a
12d0: 72 72 61 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c rray... /// <
12e0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f /summary>.. /
12f0: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 // <remarks>..
1300: 20 20 2f 2f 2f 20 54 68 69 73 20 66 75 6e 63 74 /// This funct
1310: 69 6f 6e 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 ion is a conveni
1320: 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 77 ence function, w
1330: 68 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c 73 hich first calls
1340: 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 74 ToString() on t
1350: 68 65 20 44 61 74 65 54 69 6d 65 2c 20 61 6e 64 he DateTime, and
1360: 20 74 68 65 6e 20 63 61 6c 6c 73 20 54 6f 55 54 then calls ToUT
1370: 46 38 28 29 20 77 69 74 68 20 74 68 65 0d 0a 20 F8() with the..
1380: 20 20 20 2f 2f 2f 20 73 74 72 69 6e 67 20 72 65 /// string re
1390: 73 75 6c 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c sult... /// <
13a0: 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f /remarks>.. /
13b0: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 // <param name="
13c0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 22 3e 54 dateTimeValue">T
13d0: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 he DateTime to c
13e0: 6f 6e 76 65 72 74 2e 3c 2f 70 61 72 61 6d 3e 0d onvert.</param>.
13f0: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e . /// <return
1400: 73 3e 54 68 65 20 55 54 46 2d 38 20 65 6e 63 6f s>The UTF-8 enco
1410: 64 65 64 20 73 74 72 69 6e 67 2c 20 69 6e 63 6c ded string, incl
1420: 75 64 69 6e 67 20 61 20 30 20 74 65 72 6d 69 6e uding a 0 termin
1430: 61 74 69 6e 67 20 62 79 74 65 20 61 74 20 74 68 ating byte at th
1440: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 61 72 72 e end of the arr
1450: 61 79 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 ay.</returns>..
1460: 20 20 20 70 75 62 6c 69 63 20 62 79 74 65 5b 5d public byte[]
1470: 20 54 6f 55 54 46 38 28 44 61 74 65 54 69 6d 65 ToUTF8(DateTime
1480: 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 29 0d dateTimeValue).
1490: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 . {.. re
14a0: 74 75 72 6e 20 54 6f 55 54 46 38 28 54 6f 53 74 turn ToUTF8(ToSt
14b0: 72 69 6e 67 28 64 61 74 65 54 69 6d 65 56 61 6c ring(dateTimeVal
14c0: 75 65 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a ue));.. }....
14d0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 /// <summary
14e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 >.. /// Conve
14f0: 72 74 73 20 61 20 55 54 46 2d 38 20 65 6e 63 6f rts a UTF-8 enco
1500: 64 65 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 ded IntPtr of th
1510: 65 20 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 e specified leng
1520: 74 68 20 69 6e 74 6f 20 61 20 2e 4e 45 54 20 73 th into a .NET s
1530: 74 72 69 6e 67 0d 0a 20 20 20 20 2f 2f 2f 20 3c tring.. /// <
1540: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f /summary>.. /
1550: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 // <param name="
1560: 6e 61 74 69 76 65 73 74 72 69 6e 67 22 3e 54 68 nativestring">Th
1570: 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 e pointer to the
1580: 20 6d 65 6d 6f 72 79 20 77 68 65 72 65 20 74 68 memory where th
1590: 65 20 55 54 46 2d 38 20 73 74 72 69 6e 67 20 69 e UTF-8 string i
15a0: 73 20 65 6e 63 6f 64 65 64 3c 2f 70 61 72 61 6d s encoded</param
15b0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 >.. /// <para
15c0: 6d 20 6e 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 m name="nativest
15d0: 72 69 6e 67 6c 65 6e 22 3e 54 68 65 20 6e 75 6d ringlen">The num
15e0: 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 6f 20 ber of bytes to
15f0: 64 65 63 6f 64 65 3c 2f 70 61 72 61 6d 3e 0d 0a decode</param>..
1600: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 /// <returns
1610: 3e 41 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 >A string contai
1620: 6e 69 6e 67 20 74 68 65 20 74 72 61 6e 73 6c 61 ning the transla
1630: 74 65 64 20 63 68 61 72 61 63 74 65 72 28 73 29 ted character(s)
1640: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 </returns>..
1650: 70 75 62 6c 69 63 20 76 69 72 74 75 61 6c 20 73 public virtual s
1660: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 49 tring ToString(I
1670: 6e 74 50 74 72 20 6e 61 74 69 76 65 73 74 72 69 ntPtr nativestri
1680: 6e 67 2c 20 69 6e 74 20 6e 61 74 69 76 65 73 74 ng, int nativest
1690: 72 69 6e 67 6c 65 6e 29 0d 0a 20 20 20 20 7b 0d ringlen).. {.
16a0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 54 . return UT
16b0: 46 38 54 6f 53 74 72 69 6e 67 28 6e 61 74 69 76 F8ToString(nativ
16c0: 65 73 74 72 69 6e 67 2c 20 6e 61 74 69 76 65 73 estring, natives
16d0: 74 72 69 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 tringlen);..
16e0: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 }.... /// <su
16f0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 mmary>.. ///
1700: 43 6f 6e 76 65 72 74 73 20 61 20 55 54 46 2d 38 Converts a UTF-8
1710: 20 65 6e 63 6f 64 65 64 20 49 6e 74 50 74 72 20 encoded IntPtr
1720: 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 65 64 of the specified
1730: 20 6c 65 6e 67 74 68 20 69 6e 74 6f 20 61 20 2e length into a .
1740: 4e 45 54 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 NET string..
1750: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
1760: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e /// <param n
1770: 61 6d 65 3d 22 6e 61 74 69 76 65 73 74 72 69 6e ame="nativestrin
1780: 67 22 3e 54 68 65 20 70 6f 69 6e 74 65 72 20 74 g">The pointer t
1790: 6f 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 o the memory whe
17a0: 72 65 20 74 68 65 20 55 54 46 2d 38 20 73 74 72 re the UTF-8 str
17b0: 69 6e 67 20 69 73 20 65 6e 63 6f 64 65 64 3c 2f ing is encoded</
17c0: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 param>.. ///
17d0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6e 61 74 <param name="nat
17e0: 69 76 65 73 74 72 69 6e 67 6c 65 6e 22 3e 54 68 ivestringlen">Th
17f0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 e number of byte
1800: 73 20 74 6f 20 64 65 63 6f 64 65 3c 2f 70 61 72 s to decode</par
1810: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 am>.. /// <re
1820: 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 63 turns>A string c
1830: 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 ontaining the tr
1840: 61 6e 73 6c 61 74 65 64 20 63 68 61 72 61 63 74 anslated charact
1850: 65 72 28 73 29 3c 2f 72 65 74 75 72 6e 73 3e 0d er(s)</returns>.
1860: 0a 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 . public stat
1870: 69 63 20 73 74 72 69 6e 67 20 55 54 46 38 54 6f ic string UTF8To
1880: 53 74 72 69 6e 67 28 49 6e 74 50 74 72 20 6e 61 String(IntPtr na
1890: 74 69 76 65 73 74 72 69 6e 67 2c 20 69 6e 74 20 tivestring, int
18a0: 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 29 nativestringlen)
18b0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 .. {.. i
18c0: 66 20 28 6e 61 74 69 76 65 73 74 72 69 6e 67 20 f (nativestring
18d0: 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 20 7c == IntPtr.Zero |
18e0: 7c 20 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 | nativestringle
18f0: 6e 20 3d 3d 20 30 29 20 72 65 74 75 72 6e 20 53 n == 0) return S
1900: 74 72 69 6e 67 2e 45 6d 70 74 79 3b 0d 0a 20 20 tring.Empty;..
1910: 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 74 if (nativest
1920: 72 69 6e 67 6c 65 6e 20 3c 20 30 29 0d 0a 20 20 ringlen < 0)..
1930: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6e {.. n
1940: 61 74 69 76 65 73 74 72 69 6e 67 6c 65 6e 20 3d ativestringlen =
1950: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 0;.... w
1960: 68 69 6c 65 20 28 4d 61 72 73 68 61 6c 2e 52 65 hile (Marshal.Re
1970: 61 64 42 79 74 65 28 6e 61 74 69 76 65 73 74 72 adByte(nativestr
1980: 69 6e 67 2c 20 6e 61 74 69 76 65 73 74 72 69 6e ing, nativestrin
1990: 67 6c 65 6e 29 20 21 3d 20 30 29 0d 0a 20 20 20 glen) != 0)..
19a0: 20 20 20 20 20 20 20 6e 61 74 69 76 65 73 74 72 nativestr
19b0: 69 6e 67 6c 65 6e 2b 2b 3b 0d 0a 0d 0a 20 20 20 inglen++;....
19c0: 20 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 73 if (natives
19d0: 74 72 69 6e 67 6c 65 6e 20 3d 3d 20 30 29 20 72 tringlen == 0) r
19e0: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 6d 70 eturn String.Emp
19f0: 74 79 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a ty;.. }....
1a00: 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 byte[] byt
1a10: 65 41 72 72 61 79 20 3d 20 6e 65 77 20 62 79 74 eArray = new byt
1a20: 65 5b 6e 61 74 69 76 65 73 74 72 69 6e 67 6c 65 e[nativestringle
1a30: 6e 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 72 n];.... Mar
1a40: 73 68 61 6c 2e 43 6f 70 79 28 6e 61 74 69 76 65 shal.Copy(native
1a50: 73 74 72 69 6e 67 2c 20 62 79 74 65 41 72 72 61 string, byteArra
1a60: 79 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 y, 0, nativestri
1a70: 6e 67 6c 65 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 nglen);....
1a80: 20 72 65 74 75 72 6e 20 5f 75 74 66 38 2e 47 65 return _utf8.Ge
1a90: 74 53 74 72 69 6e 67 28 62 79 74 65 41 72 72 61 tString(byteArra
1aa0: 79 2c 20 30 2c 20 6e 61 74 69 76 65 73 74 72 69 y, 0, nativestri
1ab0: 6e 67 6c 65 6e 29 3b 0d 0a 20 20 20 20 7d 0d 0a nglen);.. }..
1ac0: 0d 0a 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69 .... #endregi
1ad0: 6f 6e 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f on.... #regio
1ae0: 6e 20 44 61 74 65 54 69 6d 65 20 43 6f 6e 76 65 n DateTime Conve
1af0: 72 73 69 6f 6e 20 46 75 6e 63 74 69 6f 6e 73 0d rsion Functions.
1b00: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
1b10: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 y>.. /// Conv
1b20: 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 69 6e erts a string in
1b30: 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c 20 75 to a DateTime, u
1b40: 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 69 6d sing the DateTim
1b50: 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 69 6d eFormat, DateTim
1b60: 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f 2f 20 eKind,.. ///
1b70: 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 6d and DateTimeForm
1b80: 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 66 69 atString specifi
1b90: 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 ed for the conne
1ba0: 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 77 61 ction when it wa
1bb0: 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 2f s opened... /
1bc0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
1bd0: 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e /// <remarks>
1be0: 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 74 .. /// Accept
1bf0: 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 74 able ISO8601 Dat
1c00: 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 72 eTime formats ar
1c10: 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 e:.. /// <lis
1c20: 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e t type="bullet">
1c30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
1c40: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 <description>THH
1c50: 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 mmssK</descripti
1c60: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 on></item>..
1c70: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 /// <item><descr
1c80: 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f 64 iption>THHmmK</d
1c90: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 escription></ite
1ca0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 m>.. /// <ite
1cb0: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 m><description>H
1cc0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 4b H:mm:ss.FFFFFFFK
1cd0: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f </description></
1ce0: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c item>.. /// <
1cf0: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f item><descriptio
1d00: 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 n>HH:mm:ssK</des
1d10: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
1d20: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
1d30: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a <description>HH:
1d40: 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e mmK</description
1d50: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f ></item>.. //
1d60: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 / <item><descrip
1d70: 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 tion>yyyy-MM-dd
1d80: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 HH:mm:ss.FFFFFFF
1d90: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c K</description><
1da0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
1db0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
1dc0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 on>yyyy-MM-dd HH
1dd0: 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 70 :mm:ssK</descrip
1de0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 tion></item>..
1df0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 /// <item><des
1e00: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d cription>yyyy-MM
1e10: 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 63 -dd HH:mmK</desc
1e20: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d ription></item>.
1e30: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c . /// <item><
1e40: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 description>yyyy
1e50: 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 2e -MM-ddTHH:mm:ss.
1e60: 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 69 FFFFFFFK</descri
1e70: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 ption></item>..
1e80: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 /// <item><de
1e90: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d scription>yyyy-M
1ea0: 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 73 M-ddTHH:mmK</des
1eb0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
1ec0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
1ed0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 <description>yyy
1ee0: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 y-MM-ddTHH:mm:ss
1ef0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c K</description><
1f00: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
1f10: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
1f20: 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d 73 on>yyyyMMddHHmms
1f30: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e sK</description>
1f40: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
1f50: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
1f60: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d ion>yyyyMMddHHmm
1f70: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c K</description><
1f80: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
1f90: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
1fa0: 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d 6d on>yyyyMMddTHHmm
1fb0: 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 ssFFFFFFFK</desc
1fc0: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d ription></item>.
1fd0: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c . /// <item><
1fe0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 6d description>THHm
1ff0: 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e mss</description
2000: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f ></item>.. //
2010: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 / <item><descrip
2020: 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 63 tion>THHmm</desc
2030: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d ription></item>.
2040: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c . /// <item><
2050: 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d description>HH:m
2060: 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 m:ss.FFFFFFF</de
2070: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d scription></item
2080: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d >.. /// <item
2090: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 ><description>HH
20a0: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 :mm:ss</descript
20b0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 ion></item>..
20c0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 /// <item><desc
20d0: 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f 64 ription>HH:mm</d
20e0: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 escription></ite
20f0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 m>.. /// <ite
2100: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 m><description>y
2110: 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a yyy-MM-dd HH:mm:
2120: 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 63 ss.FFFFFFF</desc
2130: 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d ription></item>.
2140: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c . /// <item><
2150: 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 description>yyyy
2160: 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 3c -MM-dd HH:mm:ss<
2170: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 /description></i
2180: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 tem>.. /// <i
2190: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e tem><description
21a0: 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d >yyyy-MM-dd HH:m
21b0: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c m</description><
21c0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
21d0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
21e0: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 on>yyyy-MM-ddTHH
21f0: 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f :mm:ss.FFFFFFF</
2200: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 description></it
2210: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 em>.. /// <it
2220: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e em><description>
2230: 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d yyyy-MM-ddTHH:mm
2240: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f </description></
2250: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c item>.. /// <
2260: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f item><descriptio
2270: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a n>yyyy-MM-ddTHH:
2280: 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 69 mm:ss</descripti
2290: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 on></item>..
22a0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 /// <item><descr
22b0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 iption>yyyyMMddH
22c0: 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 Hmmss</descripti
22d0: 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 on></item>..
22e0: 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 /// <item><descr
22f0: 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 iption>yyyyMMddH
2300: 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e Hmm</description
2310: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f ></item>.. //
2320: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 / <item><descrip
2330: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 tion>yyyyMMddTHH
2340: 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 73 mmssFFFFFFF</des
2350: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2360: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
2370: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 <description>yyy
2380: 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 70 y-MM-dd</descrip
2390: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 tion></item>..
23a0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 /// <item><des
23b0: 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 cription>yyyyMMd
23c0: 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c d</description><
23d0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
23e0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
23f0: 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 on>yy-MM-dd</des
2400: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2410: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 74 .. /// </list
2420: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 68 >.. /// If th
2430: 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 20 e string cannot
2440: 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f 6e be matched to on
2450: 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 66 e of the above f
2460: 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 20 ormats -OR-..
2470: 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 6d /// the DateTim
2480: 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 66 eFormatString if
2490: 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 65 one was provide
24a0: 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 d, an exception
24b0: 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 65 will.. /// be
24c0: 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f 2f thrown... //
24d0: 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 / </remarks>..
24e0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d /// <param nam
24f0: 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 65 e="dateText">The
2500: 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 string containi
2510: 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e 67 ng either a long
2520: 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 20 integer number
2530: 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e of 100-nanosecon
2540: 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a 20 d units since..
2550: 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 61 /// System.Da
2560: 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 2c teTime.MinValue,
2570: 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 6f a Julian day do
2580: 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 72 uble, an integer
2590: 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f 6e number of secon
25a0: 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e 69 ds since the Uni
25b0: 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 20 x epoch, a..
25c0: 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 65 /// culture-inde
25d0: 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 65 pendent formatte
25e0: 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 d date and time
25f0: 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 74 string, a format
2600: 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d ted date and tim
2610: 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 20 e string in the
2620: 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f 2f current.. ///
2630: 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e 20 culture, or an
2640: 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 73 ISO8601-format s
2650: 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d 0a tring.</param>..
2660: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 /// <returns
2670: 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c 75 >A DateTime valu
2680: 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 e</returns>..
2690: 20 70 75 62 6c 69 63 20 44 61 74 65 54 69 6d 65 public DateTime
26a0: 20 54 6f 44 61 74 65 54 69 6d 65 28 73 74 72 69 ToDateTime(stri
26b0: 6e 67 20 64 61 74 65 54 65 78 74 29 0d 0a 20 20 ng dateText)..
26c0: 20 20 7b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 {.. retur
26d0: 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 64 61 74 n ToDateTime(dat
26e0: 65 54 65 78 74 2c 20 5f 64 61 74 65 74 69 6d 65 eText, _datetime
26f0: 46 6f 72 6d 61 74 2c 20 5f 64 61 74 65 74 69 6d Format, _datetim
2700: 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 6d 65 eKind, _datetime
2710: 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 3b 0d 0a FormatString);..
2720: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f }.... ///
2730: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
2740: 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 73 /// Converts a s
2750: 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 44 61 74 tring into a Dat
2760: 65 54 69 6d 65 2c 20 75 73 69 6e 67 20 74 68 65 eTime, using the
2770: 20 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54 specified DateT
2780: 69 6d 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 imeFormat,..
2790: 2f 2f 2f 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 /// DateTimeKind
27a0: 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f 72 and DateTimeFor
27b0: 6d 61 74 53 74 72 69 6e 67 2e 0d 0a 20 20 20 20 matString...
27c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
27d0: 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 6b 73 /// <remarks
27e0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 63 63 65 70 >.. /// Accep
27f0: 74 61 62 6c 65 20 49 53 4f 38 36 30 31 20 44 61 table ISO8601 Da
2800: 74 65 54 69 6d 65 20 66 6f 72 6d 61 74 73 20 61 teTime formats a
2810: 72 65 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 re:.. /// <li
2820: 73 74 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 st type="bullet"
2830: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d >.. /// <item
2840: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 ><description>TH
2850: 48 6d 6d 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 HmmssK</descript
2860: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 ion></item>..
2870: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 /// <item><desc
2880: 72 69 70 74 69 6f 6e 3e 54 48 48 6d 6d 4b 3c 2f ription>THHmmK</
2890: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 description></it
28a0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 em>.. /// <it
28b0: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e em><description>
28c0: 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 HH:mm:ss.FFFFFFF
28d0: 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c K</description><
28e0: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
28f0: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
2900: 6f 6e 3e 48 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 on>HH:mm:ssK</de
2910: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d scription></item
2920: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d >.. /// <item
2930: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 ><description>HH
2940: 3a 6d 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f :mmK</descriptio
2950: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f n></item>.. /
2960: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 // <item><descri
2970: 70 74 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 ption>yyyy-MM-dd
2980: 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 HH:mm:ss.FFFFFF
2990: 46 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e FK</description>
29a0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
29b0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
29c0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 ion>yyyy-MM-dd H
29d0: 48 3a 6d 6d 3a 73 73 4b 3c 2f 64 65 73 63 72 69 H:mm:ssK</descri
29e0: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 ption></item>..
29f0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 /// <item><de
2a00: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d 4d scription>yyyy-M
2a10: 4d 2d 64 64 20 48 48 3a 6d 6d 4b 3c 2f 64 65 73 M-dd HH:mmK</des
2a20: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2a30: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
2a40: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 <description>yyy
2a50: 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 73 y-MM-ddTHH:mm:ss
2a60: 2e 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 63 72 .FFFFFFFK</descr
2a70: 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a iption></item>..
2a80: 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 /// <item><d
2a90: 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 2d escription>yyyy-
2aa0: 4d 4d 2d 64 64 54 48 48 3a 6d 6d 4b 3c 2f 64 65 MM-ddTHH:mmK</de
2ab0: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d scription></item
2ac0: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d >.. /// <item
2ad0: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 ><description>yy
2ae0: 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d 6d 3a 73 yy-MM-ddTHH:mm:s
2af0: 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e sK</description>
2b00: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
2b10: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
2b20: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d 6d ion>yyyyMMddHHmm
2b30: 73 73 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e ssK</description
2b40: 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f ></item>.. //
2b50: 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 / <item><descrip
2b60: 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 48 48 6d tion>yyyyMMddHHm
2b70: 6d 4b 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e mK</description>
2b80: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
2b90: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
2ba0: 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 48 6d ion>yyyyMMddTHHm
2bb0: 6d 73 73 46 46 46 46 46 46 46 4b 3c 2f 64 65 73 mssFFFFFFFK</des
2bc0: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2bd0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
2be0: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 54 48 48 <description>THH
2bf0: 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 69 6f mmss</descriptio
2c00: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f n></item>.. /
2c10: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 // <item><descri
2c20: 70 74 69 6f 6e 3e 54 48 48 6d 6d 3c 2f 64 65 73 ption>THHmm</des
2c30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2c40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
2c50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 48 3a <description>HH:
2c60: 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 mm:ss.FFFFFFF</d
2c70: 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 escription></ite
2c80: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 m>.. /// <ite
2c90: 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 48 m><description>H
2ca0: 48 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 H:mm:ss</descrip
2cb0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 tion></item>..
2cc0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 /// <item><des
2cd0: 63 72 69 70 74 69 6f 6e 3e 48 48 3a 6d 6d 3c 2f cription>HH:mm</
2ce0: 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 description></it
2cf0: 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 em>.. /// <it
2d00: 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e em><description>
2d10: 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d yyyy-MM-dd HH:mm
2d20: 3a 73 73 2e 46 46 46 46 46 46 46 3c 2f 64 65 73 :ss.FFFFFFF</des
2d30: 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e cription></item>
2d40: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e .. /// <item>
2d50: 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 <description>yyy
2d60: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 y-MM-dd HH:mm:ss
2d70: 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f </description></
2d80: 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c item>.. /// <
2d90: 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f item><descriptio
2da0: 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 20 48 48 3a n>yyyy-MM-dd HH:
2db0: 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e mm</description>
2dc0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
2dd0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
2de0: 69 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 ion>yyyy-MM-ddTH
2df0: 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 46 46 46 3c H:mm:ss.FFFFFFF<
2e00: 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 /description></i
2e10: 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 tem>.. /// <i
2e20: 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e tem><description
2e30: 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 3a 6d >yyyy-MM-ddTHH:m
2e40: 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e 3c m</description><
2e50: 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 /item>.. ///
2e60: 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 69 <item><descripti
2e70: 6f 6e 3e 79 79 79 79 2d 4d 4d 2d 64 64 54 48 48 on>yyyy-MM-ddTHH
2e80: 3a 6d 6d 3a 73 73 3c 2f 64 65 73 63 72 69 70 74 :mm:ss</descript
2e90: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 ion></item>..
2ea0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 /// <item><desc
2eb0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 ription>yyyyMMdd
2ec0: 48 48 6d 6d 73 73 3c 2f 64 65 73 63 72 69 70 74 HHmmss</descript
2ed0: 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 ion></item>..
2ee0: 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 /// <item><desc
2ef0: 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 ription>yyyyMMdd
2f00: 48 48 6d 6d 3c 2f 64 65 73 63 72 69 70 74 69 6f HHmm</descriptio
2f10: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f n></item>.. /
2f20: 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 // <item><descri
2f30: 70 74 69 6f 6e 3e 79 79 79 79 4d 4d 64 64 54 48 ption>yyyyMMddTH
2f40: 48 6d 6d 73 73 46 46 46 46 46 46 46 3c 2f 64 65 HmmssFFFFFFF</de
2f50: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d scription></item
2f60: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d >.. /// <item
2f70: 3e 3c 64 65 73 63 72 69 70 74 69 6f 6e 3e 79 79 ><description>yy
2f80: 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 73 63 72 69 yy-MM-dd</descri
2f90: 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 ption></item>..
2fa0: 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 /// <item><de
2fb0: 73 63 72 69 70 74 69 6f 6e 3e 79 79 79 79 4d 4d scription>yyyyMM
2fc0: 64 64 3c 2f 64 65 73 63 72 69 70 74 69 6f 6e 3e dd</description>
2fd0: 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f 2f 2f </item>.. ///
2fe0: 20 3c 69 74 65 6d 3e 3c 64 65 73 63 72 69 70 74 <item><descript
2ff0: 69 6f 6e 3e 79 79 2d 4d 4d 2d 64 64 3c 2f 64 65 ion>yy-MM-dd</de
3000: 73 63 72 69 70 74 69 6f 6e 3e 3c 2f 69 74 65 6d scription></item
3010: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 6c 69 73 >.. /// </lis
3020: 74 3e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 74 t>.. /// If t
3030: 68 65 20 73 74 72 69 6e 67 20 63 61 6e 6e 6f 74 he string cannot
3040: 20 62 65 20 6d 61 74 63 68 65 64 20 74 6f 20 6f be matched to o
3050: 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 ne of the above
3060: 66 6f 72 6d 61 74 73 20 2d 4f 52 2d 0d 0a 20 20 formats -OR-..
3070: 20 20 2f 2f 2f 20 74 68 65 20 44 61 74 65 54 69 /// the DateTi
3080: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 69 meFormatString i
3090: 66 20 6f 6e 65 20 77 61 73 20 70 72 6f 76 69 64 f one was provid
30a0: 65 64 2c 20 61 6e 20 65 78 63 65 70 74 69 6f 6e ed, an exception
30b0: 20 77 69 6c 6c 0d 0a 20 20 20 20 2f 2f 2f 20 62 will.. /// b
30c0: 65 20 74 68 72 6f 77 6e 2e 0d 0a 20 20 20 20 2f e thrown... /
30d0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 // </remarks>..
30e0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
30f0: 6d 65 3d 22 64 61 74 65 54 65 78 74 22 3e 54 68 me="dateText">Th
3100: 65 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e e string contain
3110: 69 6e 67 20 65 69 74 68 65 72 20 61 20 6c 6f 6e ing either a lon
3120: 67 20 69 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 g integer number
3130: 20 6f 66 20 31 30 30 2d 6e 61 6e 6f 73 65 63 6f of 100-nanoseco
3140: 6e 64 20 75 6e 69 74 73 20 73 69 6e 63 65 0d 0a nd units since..
3150: 20 20 20 20 2f 2f 2f 20 53 79 73 74 65 6d 2e 44 /// System.D
3160: 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c 75 65 ateTime.MinValue
3170: 2c 20 61 20 4a 75 6c 69 61 6e 20 64 61 79 20 64 , a Julian day d
3180: 6f 75 62 6c 65 2c 20 61 6e 20 69 6e 74 65 67 65 ouble, an intege
3190: 72 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 6f r number of seco
31a0: 6e 64 73 20 73 69 6e 63 65 20 74 68 65 20 55 6e nds since the Un
31b0: 69 78 20 65 70 6f 63 68 2c 20 61 0d 0a 20 20 20 ix epoch, a..
31c0: 20 2f 2f 2f 20 63 75 6c 74 75 72 65 2d 69 6e 64 /// culture-ind
31d0: 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 74 74 ependent formatt
31e0: 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 ed date and time
31f0: 20 73 74 72 69 6e 67 2c 20 61 20 66 6f 72 6d 61 string, a forma
3200: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 tted date and ti
3210: 6d 65 20 73 74 72 69 6e 67 20 69 6e 20 74 68 65 me string in the
3220: 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 2f 2f current.. //
3230: 2f 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 61 6e / culture, or an
3240: 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 74 20 ISO8601-format
3250: 73 74 72 69 6e 67 2e 3c 2f 70 61 72 61 6d 3e 0d string.</param>.
3260: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 . /// <param
3270: 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 22 3e 54 68 name="format">Th
3280: 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d e SQLiteDateForm
3290: 61 74 73 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 ats to use.</par
32a0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 am>.. /// <pa
32b0: 72 61 6d 20 6e 61 6d 65 3d 22 6b 69 6e 64 22 3e ram name="kind">
32c0: 54 68 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 The DateTimeKind
32d0: 20 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e to use.</param>
32e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d .. /// <param
32f0: 20 6e 61 6d 65 3d 22 66 6f 72 6d 61 74 53 74 72 name="formatStr
3300: 69 6e 67 22 3e 54 68 65 20 44 61 74 65 54 69 6d ing">The DateTim
3310: 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 e format string
3320: 74 6f 20 75 73 65 2e 3c 2f 70 61 72 61 6d 3e 0d to use.</param>.
3330: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e . /// <return
3340: 73 3e 41 20 44 61 74 65 54 69 6d 65 20 76 61 6c s>A DateTime val
3350: 75 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 ue</returns>..
3360: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 public static
3370: 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 54 DateTime ToDateT
3380: 69 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 73 74 ime(.. st
3390: 72 69 6e 67 20 64 61 74 65 54 65 78 74 2c 0d 0a ring dateText,..
33a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61 SQLiteDa
33b0: 74 65 46 6f 72 6d 61 74 73 20 66 6f 72 6d 61 74 teFormats format
33c0: 2c 0d 0a 20 20 20 20 20 20 20 20 44 61 74 65 54 ,.. DateT
33d0: 69 6d 65 4b 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 imeKind kind,..
33e0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 6f string fo
33f0: 72 6d 61 74 53 74 72 69 6e 67 0d 0a 20 20 20 20 rmatString..
3400: 20 20 20 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 ).. {..
3410: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 66 6f switch (fo
3420: 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 7b rmat).. {
3430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 .. ca
3440: 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 se SQLiteDateFor
3450: 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 20 mats.Ticks:..
3460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a {..
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3480: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 44 return new D
3490: 61 74 65 54 69 6d 65 28 43 6f 6e 76 65 72 74 2e ateTime(Convert.
34a0: 54 6f 49 6e 74 36 34 28 0d 0a 20 20 20 20 20 20 ToInt64(..
34b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
34c0: 20 20 64 61 74 65 54 65 78 74 2c 20 43 75 6c 74 dateText, Cult
34d0: 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e ureInfo.Invarian
34e0: 74 43 75 6c 74 75 72 65 29 2c 20 6b 69 6e 64 29 tCulture), kind)
34f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
3500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
3510: 20 20 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 case SQLiteDat
3520: 65 46 6f 72 6d 61 74 73 2e 4a 75 6c 69 61 6e 44 eFormats.JulianD
3530: 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ay:..
3540: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 {..
3550: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
3560: 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 28 43 6f rn ToDateTime(Co
3570: 6e 76 65 72 74 2e 54 6f 44 6f 75 62 6c 65 28 0d nvert.ToDouble(.
3580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3590: 20 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 dateTex
35a0: 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 t, CultureInfo.I
35b0: 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 nvariantCulture)
35c0: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 , kind);..
35d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
35e0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 case SQ
35f0: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e LiteDateFormats.
3600: 55 6e 69 78 45 70 6f 63 68 3a 0d 0a 20 20 20 20 UnixEpoch:..
3610: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 {..
3620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3630: 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 return DateTi
3640: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 0d me.SpecifyKind(.
3650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3660: 20 20 20 20 20 20 20 20 20 55 6e 69 78 45 70 6f UnixEpo
3670: 63 68 2e 41 64 64 53 65 63 6f 6e 64 73 28 43 6f ch.AddSeconds(Co
3680: 6e 76 65 72 74 2e 54 6f 49 6e 74 33 32 28 0d 0a nvert.ToInt32(..
3690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
36a0: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 dateText
36b0: 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e , CultureInfo.In
36c0: 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 29 29 variantCulture))
36d0: 2c 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 , kind);..
36e0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
36f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 case SQ
3700: 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e LiteDateFormats.
3710: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 InvariantCulture
3720: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
3730: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 {..
3740: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 66 6f if (fo
3750: 72 6d 61 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 rmatString != nu
3760: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ll)..
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
3780: 75 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 urn DateTime.Spe
3790: 63 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d cifyKind(DateTim
37a0: 65 2e 50 61 72 73 65 45 78 61 63 74 28 0d 0a 20 e.ParseExact(..
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
37c0: 20 20 20 20 20 20 20 20 20 20 20 64 61 74 65 54 dateT
37d0: 65 78 74 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e ext, formatStrin
37e0: 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 g,..
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3800: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e DateTimeFormatIn
3810: 66 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f fo.InvariantInfo
3820: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b k
3840: 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b ind == DateTimeK
3850: 69 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 ind.Utc ?..
3860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3870: 20 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 DateT
3880: 69 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 imeStyles.Adjust
3890: 54 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 ToUniversal :..
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 D
38c0: 61 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f ateTimeStyles.No
38d0: 6e 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 ne),..
38e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
38f0: 20 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 kind);..
3900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c el
3910: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 se..
3920: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu
3930: 72 6e 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 rn DateTime.Spec
3940: 69 66 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 ifyKind(DateTime
3950: 2e 50 61 72 73 65 28 0d 0a 20 20 20 20 20 20 20 .Parse(..
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3970: 20 20 20 20 20 64 61 74 65 54 65 78 74 2c 20 44 dateText, D
3980: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 ateTimeFormatInf
3990: 6f 2e 49 6e 76 61 72 69 61 6e 74 49 6e 66 6f 2c o.InvariantInfo,
39a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
39b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 ki
39c0: 6e 64 20 3d 3d 20 44 61 74 65 54 69 6d 65 4b 69 nd == DateTimeKi
39d0: 6e 64 2e 55 74 63 20 3f 0d 0a 20 20 20 20 20 20 nd.Utc ?..
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
39f0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 DateTi
3a00: 6d 65 53 74 79 6c 65 73 2e 41 64 6a 75 73 74 54 meStyles.AdjustT
3a10: 6f 55 6e 69 76 65 72 73 61 6c 20 3a 0d 0a 20 20 oUniversal :..
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 Da
3a40: 74 65 54 69 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e teTimeStyles.Non
3a50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e),..
3a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3a70: 20 6b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 kind);..
3a80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 }..
3a90: 20 20 20 20 20 20 20 20 63 61 73 65 20 53 51 4c case SQL
3aa0: 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 iteDateFormats.C
3ab0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a urrentCulture:..
3ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ad0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
3ae0: 20 20 20 20 20 20 20 69 66 20 28 66 6f 72 6d 61 if (forma
3af0: 74 53 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 tString != null)
3b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3b10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
3b20: 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 66 DateTime.Specif
3b30: 79 4b 69 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 yKind(DateTime.P
3b40: 61 72 73 65 45 78 61 63 74 28 0d 0a 20 20 20 20 arseExact(..
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b60: 20 20 20 20 20 20 20 20 64 61 74 65 54 65 78 74 dateText
3b70: 2c 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 2c 0d , formatString,.
3b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 Dat
3ba0: 65 54 69 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e eTimeFormatInfo.
3bb0: 43 75 72 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 CurrentInfo,..
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3bd0: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d kind =
3be0: 3d 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 = DateTimeKind.U
3bf0: 74 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 tc ?..
3c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c10: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 DateTimeSt
3c20: 79 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 yles.AdjustToUni
3c30: 76 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 versal :..
3c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c50: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 DateTi
3c60: 6d 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d meStyles.None),.
3c70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
3c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e kin
3c90: 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 d);..
3ca0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 else..
3cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3cc0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 61 return Da
3cd0: 74 65 54 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 teTime.SpecifyKi
3ce0: 6e 64 28 44 61 74 65 54 69 6d 65 2e 50 61 72 73 nd(DateTime.Pars
3cf0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e(..
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d10: 64 61 74 65 54 65 78 74 2c 20 44 61 74 65 54 69 dateText, DateTi
3d20: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 43 75 72 meFormatInfo.Cur
3d30: 72 65 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 rentInfo,..
3d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d50: 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 kind == D
3d60: 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 ateTimeKind.Utc
3d70: 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ?..
3d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d90: 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 DateTimeStyle
3da0: 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 s.AdjustToUniver
3db0: 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 sal :..
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3dd0: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 DateTimeS
3de0: 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 tyles.None),..
3df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e00: 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b kind);
3e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3e20: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
3e30: 20 64 65 66 61 75 6c 74 3a 20 2f 2a 20 49 53 4f default: /* ISO
3e40: 2d 38 36 30 31 20 2a 2f 0d 0a 20 20 20 20 20 20 -8601 */..
3e50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 {..
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e70: 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 6e if (formatStrin
3e80: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 g != null)..
3e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ea0: 20 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 return DateT
3eb0: 69 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 ime.SpecifyKind(
3ec0: 44 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 DateTime.ParseEx
3ed0: 61 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 act(..
3ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ef0: 20 20 64 61 74 65 54 65 78 74 2c 20 66 6f 72 6d dateText, form
3f00: 61 74 53 74 72 69 6e 67 2c 0d 0a 20 20 20 20 20 atString,..
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f20: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 46 DateTimeF
3f30: 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 61 72 69 ormatInfo.Invari
3f40: 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 20 20 20 antInfo,..
3f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3f60: 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 44 61 kind == Da
3f70: 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 63 20 3f teTimeKind.Utc ?
3f80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3fa0: 20 20 44 61 74 65 54 69 6d 65 53 74 79 6c 65 73 DateTimeStyles
3fb0: 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 65 72 73 .AdjustToUnivers
3fc0: 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 al :..
3fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3fe0: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 DateTimeSt
3ff0: 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a 20 20 20 yles.None),..
4000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4010: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 29 3b 0d kind);.
4020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4030: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 else..
4040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4050: 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 return DateTi
4060: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 44 me.SpecifyKind(D
4070: 61 74 65 54 69 6d 65 2e 50 61 72 73 65 45 78 61 ateTime.ParseExa
4080: 63 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ct(..
4090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
40a0: 20 64 61 74 65 54 65 78 74 2c 20 5f 64 61 74 65 dateText, _date
40b0: 74 69 6d 65 46 6f 72 6d 61 74 73 2c 0d 0a 20 20 timeFormats,..
40c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
40d0: 20 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 DateTi
40e0: 6d 65 46 6f 72 6d 61 74 49 6e 66 6f 2e 49 6e 76 meFormatInfo.Inv
40f0: 61 72 69 61 6e 74 49 6e 66 6f 2c 0d 0a 20 20 20 ariantInfo,..
4100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4110: 20 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d kind ==
4120: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 74 DateTimeKind.Ut
4130: 63 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 c ?..
4140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4150: 20 20 20 20 20 44 61 74 65 54 69 6d 65 53 74 79 DateTimeSty
4160: 6c 65 73 2e 41 64 6a 75 73 74 54 6f 55 6e 69 76 les.AdjustToUniv
4170: 65 72 73 61 6c 20 3a 0d 0a 20 20 20 20 20 20 20 ersal :..
4180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4190: 20 20 20 20 20 20 20 20 20 44 61 74 65 54 69 6d DateTim
41a0: 65 53 74 79 6c 65 73 2e 4e 6f 6e 65 29 2c 0d 0a eStyles.None),..
41b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
41c0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 6e 64 kind
41d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
41e0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d }.. }
41f0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f .. }.... /
4200: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 // <summary>..
4210: 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 /// Converts a
4220: 20 6a 75 6c 69 61 6e 64 61 79 20 76 61 6c 75 65 julianday value
4230: 20 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 into a DateTime
4240: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d .. /// </summ
4250: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 ary>.. /// <p
4260: 61 72 61 6d 20 6e 61 6d 65 3d 22 6a 75 6c 69 61 aram name="julia
4270: 6e 44 61 79 22 3e 54 68 65 20 76 61 6c 75 65 20 nDay">The value
4280: 74 6f 20 63 6f 6e 76 65 72 74 3c 2f 70 61 72 61 to convert</para
4290: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 m>.. /// <ret
42a0: 75 72 6e 73 3e 41 20 2e 4e 45 54 20 44 61 74 65 urns>A .NET Date
42b0: 54 69 6d 65 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a Time</returns>..
42c0: 20 20 20 20 70 75 62 6c 69 63 20 44 61 74 65 54 public DateT
42d0: 69 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 64 ime ToDateTime(d
42e0: 6f 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79 29 ouble julianDay)
42f0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 72 .. {.. r
4300: 65 74 75 72 6e 20 54 6f 44 61 74 65 54 69 6d 65 eturn ToDateTime
4310: 28 6a 75 6c 69 61 6e 44 61 79 2c 20 5f 64 61 74 (julianDay, _dat
4320: 65 74 69 6d 65 4b 69 6e 64 29 3b 0d 0a 20 20 20 etimeKind);..
4330: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 }.... /// <s
4340: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f ummary>.. ///
4350: 20 43 6f 6e 76 65 72 74 73 20 61 20 6a 75 6c 69 Converts a juli
4360: 61 6e 64 61 79 20 76 61 6c 75 65 20 69 6e 74 6f anday value into
4370: 20 61 20 44 61 74 65 54 69 6d 65 0d 0a 20 20 20 a DateTime..
4380: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d /// </summary>.
4390: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 . /// <param
43a0: 6e 61 6d 65 3d 22 6a 75 6c 69 61 6e 44 61 79 22 name="julianDay"
43b0: 3e 54 68 65 20 76 61 6c 75 65 20 74 6f 20 63 6f >The value to co
43c0: 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 nvert</param>..
43d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
43e0: 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 me="kind">The Da
43f0: 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 teTimeKind to us
4400: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 e.</param>..
4410: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 41 20 2e /// <returns>A .
4420: 4e 45 54 20 44 61 74 65 54 69 6d 65 3c 2f 72 65 NET DateTime</re
4430: 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c turns>.. publ
4440: 69 63 20 73 74 61 74 69 63 20 44 61 74 65 54 69 ic static DateTi
4450: 6d 65 20 54 6f 44 61 74 65 54 69 6d 65 28 64 6f me ToDateTime(do
4460: 75 62 6c 65 20 6a 75 6c 69 61 6e 44 61 79 2c 20 uble julianDay,
4470: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 6b 69 6e DateTimeKind kin
4480: 64 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 d).. {..
4490: 20 20 20 72 65 74 75 72 6e 20 44 61 74 65 54 69 return DateTi
44a0: 6d 65 2e 53 70 65 63 69 66 79 4b 69 6e 64 28 0d me.SpecifyKind(.
44b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 . Dat
44c0: 65 54 69 6d 65 2e 46 72 6f 6d 4f 41 44 61 74 65 eTime.FromOADate
44d0: 28 6a 75 6c 69 61 6e 44 61 79 20 2d 20 4f 6c 65 (julianDay - Ole
44e0: 41 75 74 6f 6d 61 74 69 6f 6e 45 70 6f 63 68 41 AutomationEpochA
44f0: 73 4a 75 6c 69 61 6e 44 61 79 29 2c 20 6b 69 6e sJulianDay), kin
4500: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 d);.. }....
4510: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
4520: 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 . /// Convert
4530: 73 20 61 20 44 61 74 65 54 69 6d 65 20 73 74 72 s a DateTime str
4540: 75 63 74 20 74 6f 20 61 20 4a 75 6c 69 61 6e 44 uct to a JulianD
4550: 61 79 20 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f ay double.. /
4560: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
4570: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
4580: 6d 65 3d 22 76 61 6c 75 65 22 3e 54 68 65 20 44 me="value">The D
4590: 61 74 65 54 69 6d 65 20 74 6f 20 63 6f 6e 76 65 ateTime to conve
45a0: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 rt</param>..
45b0: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 /// <returns>The
45c0: 20 4a 75 6c 69 61 6e 44 61 79 20 76 61 6c 75 65 JulianDay value
45d0: 20 74 68 65 20 44 61 74 65 74 69 6d 65 20 72 65 the Datetime re
45e0: 70 72 65 73 65 6e 74 73 3c 2f 72 65 74 75 72 6e presents</return
45f0: 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 s>.. public s
4600: 74 61 74 69 63 20 64 6f 75 62 6c 65 20 54 6f 4a tatic double ToJ
4610: 75 6c 69 61 6e 44 61 79 28 44 61 74 65 54 69 6d ulianDay(DateTim
4620: 65 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 7b 0d e value).. {.
4630: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 . return va
4640: 6c 75 65 2e 54 6f 4f 41 44 61 74 65 28 29 20 2b lue.ToOADate() +
4650: 20 4f 6c 65 41 75 74 6f 6d 61 74 69 6f 6e 45 70 OleAutomationEp
4660: 6f 63 68 41 73 4a 75 6c 69 61 6e 44 61 79 3b 0d ochAsJulianDay;.
4670: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f . }.... //
4680: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 / <summary>..
4690: 20 2f 2f 2f 20 43 6f 6e 76 65 72 74 73 20 61 20 /// Converts a
46a0: 44 61 74 65 54 69 6d 65 20 73 74 72 75 63 74 20 DateTime struct
46b0: 74 6f 20 74 68 65 20 77 68 6f 6c 65 20 6e 75 6d to the whole num
46c0: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 ber of seconds s
46d0: 69 6e 63 65 20 74 68 65 0d 0a 20 20 20 20 2f 2f ince the.. //
46e0: 2f 20 55 6e 69 78 20 65 70 6f 63 68 2e 0d 0a 20 / Unix epoch...
46f0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
4700: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 >.. /// <para
4710: 6d 20 6e 61 6d 65 3d 22 76 61 6c 75 65 22 3e 54 m name="value">T
4720: 68 65 20 44 61 74 65 54 69 6d 65 20 74 6f 20 63 he DateTime to c
4730: 6f 6e 76 65 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a onvert</param>..
4740: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 /// <returns
4750: 3e 54 68 65 20 77 68 6f 6c 65 20 6e 75 6d 62 65 >The whole numbe
4760: 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 69 6e r of seconds sin
4770: 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 6f 63 ce the Unix epoc
4780: 68 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 h</returns>..
4790: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c public static l
47a0: 6f 6e 67 20 54 6f 55 6e 69 78 45 70 6f 63 68 28 ong ToUnixEpoch(
47b0: 44 61 74 65 54 69 6d 65 20 76 61 6c 75 65 29 0d DateTime value).
47c0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 . {..
47d0: 72 65 74 75 72 6e 20 28 76 61 6c 75 65 2e 53 75 return (value.Su
47e0: 62 74 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68 btract(UnixEpoch
47f0: 29 2e 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 ).Ticks / TimeSp
4800: 61 6e 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e an.TicksPerSecon
4810: 64 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 d);.. }....
4820: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
4830: 0a 20 20 20 20 2f 2f 2f 20 52 65 74 75 72 6e 73 . /// Returns
4840: 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f the DateTime fo
4850: 72 6d 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 rmat string to u
4860: 73 65 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 se for the speci
4870: 66 69 65 64 20 44 61 74 65 54 69 6d 65 4b 69 6e fied DateTimeKin
4880: 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 20 3c d... /// If <
4890: 70 61 72 61 6d 72 65 66 20 6e 61 6d 65 3d 22 66 paramref name="f
48a0: 6f 72 6d 61 74 53 74 72 69 6e 67 22 2f 3e 20 69 ormatString"/> i
48b0: 73 20 6e 6f 74 20 6e 75 6c 6c 2c 20 69 74 20 77 s not null, it w
48c0: 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 20 ill be returned
48d0: 76 65 72 62 61 74 69 6d 2e 0d 0a 20 20 20 20 2f verbatim... /
48e0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
48f0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
4900: 6d 65 3d 22 6b 69 6e 64 22 3e 54 68 65 20 44 61 me="kind">The Da
4910: 74 65 54 69 6d 65 4b 69 6e 64 20 74 6f 20 75 73 teTimeKind to us
4920: 65 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 e.</param>..
4930: 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d /// <param name=
4940: 22 66 6f 72 6d 61 74 53 74 72 69 6e 67 22 3e 54 "formatString">T
4950: 68 65 20 44 61 74 65 54 69 6d 65 20 66 6f 72 6d he DateTime form
4960: 61 74 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 at string to use
4970: 2e 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f .</param>.. /
4980: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 // <returns>..
4990: 20 20 2f 2f 2f 20 54 68 65 20 44 61 74 65 54 69 /// The DateTi
49a0: 6d 65 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 me format string
49b0: 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 65 20 to use for the
49c0: 73 70 65 63 69 66 69 65 64 20 44 61 74 65 54 69 specified DateTi
49d0: 6d 65 4b 69 6e 64 2e 0d 0a 20 20 20 20 2f 2f 2f meKind... ///
49e0: 20 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 </returns>..
49f0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 private static
4a00: 73 74 72 69 6e 67 20 47 65 74 44 61 74 65 54 69 string GetDateTi
4a10: 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 28 0d 0a 20 meKindFormat(..
4a20: 20 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 4b DateTimeK
4a30: 69 6e 64 20 6b 69 6e 64 2c 0d 0a 20 20 20 20 20 ind kind,..
4a40: 20 20 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 string format
4a50: 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 String..
4a60: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
4a70: 20 20 69 66 20 28 66 6f 72 6d 61 74 53 74 72 69 if (formatStri
4a80: 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 72 65 74 75 ng != null) retu
4a90: 72 6e 20 66 6f 72 6d 61 74 53 74 72 69 6e 67 3b rn formatString;
4aa0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
4ab0: 20 28 6b 69 6e 64 20 3d 3d 20 44 61 74 65 54 69 (kind == DateTi
4ac0: 6d 65 4b 69 6e 64 2e 55 74 63 29 20 3f 20 5f 64 meKind.Utc) ? _d
4ad0: 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 55 74 63 atetimeFormatUtc
4ae0: 20 3a 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d : _datetimeForm
4af0: 61 74 4c 6f 63 61 6c 3b 0d 0a 20 20 20 20 7d 0d atLocal;.. }.
4b00: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d ... /// <summ
4b10: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f ary>.. /// Co
4b20: 6e 76 65 72 74 73 20 61 20 73 74 72 69 6e 67 20 nverts a string
4b30: 69 6e 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2c into a DateTime,
4b40: 20 75 73 69 6e 67 20 74 68 65 20 44 61 74 65 54 using the DateT
4b50: 69 6d 65 46 6f 72 6d 61 74 2c 20 44 61 74 65 54 imeFormat, DateT
4b60: 69 6d 65 4b 69 6e 64 2c 0d 0a 20 20 20 20 2f 2f imeKind,.. //
4b70: 2f 20 61 6e 64 20 44 61 74 65 54 69 6d 65 46 6f / and DateTimeFo
4b80: 72 6d 61 74 53 74 72 69 6e 67 20 73 70 65 63 69 rmatString speci
4b90: 66 69 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e fied for the con
4ba0: 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 nection when it
4bb0: 77 61 73 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 was opened...
4bc0: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d /// </summary>.
4bd0: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 . /// <param
4be0: 6e 61 6d 65 3d 22 64 61 74 65 56 61 6c 75 65 22 name="dateValue"
4bf0: 3e 54 68 65 20 44 61 74 65 54 69 6d 65 20 76 61 >The DateTime va
4c00: 6c 75 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c 2f lue to convert</
4c10: 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 param>.. ///
4c20: 3c 72 65 74 75 72 6e 73 3e 45 69 74 68 65 72 20 <returns>Either
4c30: 61 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e a string contain
4c40: 69 6e 67 20 74 68 65 20 6c 6f 6e 67 20 69 6e 74 ing the long int
4c50: 65 67 65 72 20 6e 75 6d 62 65 72 20 6f 66 20 31 eger number of 1
4c60: 30 30 2d 6e 61 6e 6f 73 65 63 6f 6e 64 20 75 6e 00-nanosecond un
4c70: 69 74 73 20 73 69 6e 63 65 20 53 79 73 74 65 6d its since System
4c80: 2e 44 61 74 65 54 69 6d 65 2e 4d 69 6e 56 61 6c .DateTime.MinVal
4c90: 75 65 2c 20 61 0d 0a 20 20 20 20 2f 2f 2f 20 4a ue, a.. /// J
4ca0: 75 6c 69 61 6e 20 64 61 79 20 64 6f 75 62 6c 65 ulian day double
4cb0: 2c 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 6d , an integer num
4cc0: 62 65 72 20 6f 66 20 73 65 63 6f 6e 64 73 20 73 ber of seconds s
4cd0: 69 6e 63 65 20 74 68 65 20 55 6e 69 78 20 65 70 ince the Unix ep
4ce0: 6f 63 68 2c 20 61 20 63 75 6c 74 75 72 65 2d 69 och, a culture-i
4cf0: 6e 64 65 70 65 6e 64 65 6e 74 20 66 6f 72 6d 61 ndependent forma
4d00: 74 74 65 64 20 64 61 74 65 20 61 6e 64 20 74 69 tted date and ti
4d10: 6d 65 0d 0a 20 20 20 20 2f 2f 2f 20 73 74 72 69 me.. /// stri
4d20: 6e 67 2c 20 61 20 66 6f 72 6d 61 74 74 65 64 20 ng, a formatted
4d30: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 73 74 date and time st
4d40: 72 69 6e 67 20 69 6e 20 74 68 65 20 63 75 72 72 ring in the curr
4d50: 65 6e 74 20 63 75 6c 74 75 72 65 2c 20 6f 72 20 ent culture, or
4d60: 61 6e 20 49 53 4f 38 36 30 31 2d 66 6f 72 6d 61 an ISO8601-forma
4d70: 74 20 64 61 74 65 2f 74 69 6d 65 20 73 74 72 69 t date/time stri
4d80: 6e 67 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 ng.</returns>..
4d90: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 public string
4da0: 20 54 6f 53 74 72 69 6e 67 28 44 61 74 65 54 69 ToString(DateTi
4db0: 6d 65 20 64 61 74 65 56 61 6c 75 65 29 0d 0a 20 me dateValue)..
4dc0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 77 {.. sw
4dd0: 69 74 63 68 20 28 5f 64 61 74 65 74 69 6d 65 46 itch (_datetimeF
4de0: 6f 72 6d 61 74 29 0d 0a 20 20 20 20 20 20 20 20 ormat)..
4df0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {.. c
4e00: 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 6f ase SQLiteDateFo
4e10: 72 6d 61 74 73 2e 54 69 63 6b 73 3a 0d 0a 20 20 rmats.Ticks:..
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
4e30: 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 turn dateValue.T
4e40: 69 63 6b 73 2e 54 6f 53 74 72 69 6e 67 28 43 75 icks.ToString(Cu
4e50: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 ltureInfo.Invari
4e60: 61 6e 74 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 antCulture);..
4e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 53 case S
4e80: 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 73 QLiteDateFormats
4e90: 2e 4a 75 6c 69 61 6e 44 61 79 3a 0d 0a 20 20 20 .JulianDay:..
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
4eb0: 75 72 6e 20 54 6f 4a 75 6c 69 61 6e 44 61 79 28 urn ToJulianDay(
4ec0: 64 61 74 65 56 61 6c 75 65 29 2e 54 6f 53 74 72 dateValue).ToStr
4ed0: 69 6e 67 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e ing(CultureInfo.
4ee0: 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 72 65 InvariantCulture
4ef0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
4f00: 63 61 73 65 20 53 51 4c 69 74 65 44 61 74 65 46 case SQLiteDateF
4f10: 6f 72 6d 61 74 73 2e 55 6e 69 78 45 70 6f 63 68 ormats.UnixEpoch
4f20: 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
4f30: 20 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e 67 return ((long
4f40: 29 28 64 61 74 65 56 61 6c 75 65 2e 53 75 62 74 )(dateValue.Subt
4f50: 72 61 63 74 28 55 6e 69 78 45 70 6f 63 68 29 2e ract(UnixEpoch).
4f60: 54 69 63 6b 73 20 2f 20 54 69 6d 65 53 70 61 6e Ticks / TimeSpan
4f70: 2e 54 69 63 6b 73 50 65 72 53 65 63 6f 6e 64 29 .TicksPerSecond)
4f80: 29 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 ).ToString();..
4f90: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case
4fa0: 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 74 SQLiteDateFormat
4fb0: 73 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 s.InvariantCultu
4fc0: 72 65 3a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 re:..
4fd0: 20 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 return date
4fe0: 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 28 Value.ToString((
4ff0: 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 _datetimeFormatS
5000: 74 72 69 6e 67 20 21 3d 20 6e 75 6c 6c 29 20 3f tring != null) ?
5010: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5020: 20 20 20 20 20 20 5f 64 61 74 65 74 69 6d 65 46 _datetimeF
5030: 6f 72 6d 61 74 53 74 72 69 6e 67 20 3a 20 46 75 ormatString : Fu
5040: 6c 6c 46 6f 72 6d 61 74 2c 20 43 75 6c 74 75 72 llFormat, Cultur
5050: 65 49 6e 66 6f 2e 49 6e 76 61 72 69 61 6e 74 43 eInfo.InvariantC
5060: 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20 20 ulture);..
5070: 20 20 20 20 20 20 63 61 73 65 20 53 51 4c 69 74 case SQLit
5080: 65 44 61 74 65 46 6f 72 6d 61 74 73 2e 43 75 72 eDateFormats.Cur
5090: 72 65 6e 74 43 75 6c 74 75 72 65 3a 0d 0a 20 20 rentCulture:..
50a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
50b0: 74 75 72 6e 20 64 61 74 65 56 61 6c 75 65 2e 54 turn dateValue.T
50c0: 6f 53 74 72 69 6e 67 28 28 5f 64 61 74 65 74 69 oString((_dateti
50d0: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 20 21 meFormatString !
50e0: 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 = null) ?..
50f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f _
5100: 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 53 74 datetimeFormatSt
5110: 72 69 6e 67 20 3a 20 46 75 6c 6c 46 6f 72 6d 61 ring : FullForma
5120: 74 2c 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 t, CultureInfo.C
5130: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 29 3b 0d urrentCulture);.
5140: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 . def
5150: 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 20 20 20 ault:..
5160: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 64 return (d
5170: 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 20 3d 3d ateValue.Kind ==
5180: 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 2e 55 6e DateTimeKind.Un
5190: 73 70 65 63 69 66 69 65 64 29 20 3f 0d 0a 20 20 specified) ?..
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
51b0: 20 20 44 61 74 65 54 69 6d 65 2e 53 70 65 63 69 DateTime.Speci
51c0: 66 79 4b 69 6e 64 28 64 61 74 65 56 61 6c 75 65 fyKind(dateValue
51d0: 2c 20 5f 64 61 74 65 74 69 6d 65 4b 69 6e 64 29 , _datetimeKind)
51e0: 2e 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 .ToString(..
51f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5200: 20 20 20 20 47 65 74 44 61 74 65 54 69 6d 65 4b GetDateTimeK
5210: 69 6e 64 46 6f 72 6d 61 74 28 5f 64 61 74 65 74 indFormat(_datet
5220: 69 6d 65 4b 69 6e 64 2c 20 5f 64 61 74 65 74 69 imeKind, _dateti
5230: 6d 65 46 6f 72 6d 61 74 53 74 72 69 6e 67 29 2c meFormatString),
5240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
5250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 Cu
5260: 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 72 69 ltureInfo.Invari
5270: 61 6e 74 43 75 6c 74 75 72 65 29 20 3a 20 64 61 antCulture) : da
5280: 74 65 56 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 teValue.ToString
5290: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (..
52a0: 20 20 20 20 20 20 20 20 20 20 20 47 65 74 44 61 GetDa
52b0: 74 65 54 69 6d 65 4b 69 6e 64 46 6f 72 6d 61 74 teTimeKindFormat
52c0: 28 64 61 74 65 56 61 6c 75 65 2e 4b 69 6e 64 2c (dateValue.Kind,
52d0: 20 5f 64 61 74 65 74 69 6d 65 46 6f 72 6d 61 74 _datetimeFormat
52e0: 53 74 72 69 6e 67 29 2c 0d 0a 20 20 20 20 20 20 String),..
52f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5300: 20 20 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 CultureInf
5310: 6f 2e 49 6e 76 61 72 69 61 6e 74 43 75 6c 74 75 o.InvariantCultu
5320: 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d re);.. }.
5330: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f . }.... //
5340: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 / <summary>..
5350: 20 2f 2f 2f 20 49 6e 74 65 72 6e 61 6c 20 66 75 /// Internal fu
5360: 6e 63 74 69 6f 6e 20 74 6f 20 63 6f 6e 76 65 72 nction to conver
5370: 74 20 61 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 t a UTF-8 encode
5380: 64 20 49 6e 74 50 74 72 20 6f 66 20 74 68 65 20 d IntPtr of the
5390: 73 70 65 63 69 66 69 65 64 20 6c 65 6e 67 74 68 specified length
53a0: 20 74 6f 20 61 20 44 61 74 65 54 69 6d 65 2e 0d to a DateTime..
53b0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
53c0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 ry>.. /// <re
53d0: 6d 61 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 marks>.. ///
53e0: 54 68 69 73 20 69 73 20 61 20 63 6f 6e 76 65 6e This is a conven
53f0: 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e 2c 20 ience function,
5400: 77 68 69 63 68 20 66 69 72 73 74 20 63 61 6c 6c which first call
5410: 73 20 54 6f 53 74 72 69 6e 67 28 29 20 6f 6e 20 s ToString() on
5420: 74 68 65 20 49 6e 74 50 74 72 20 74 6f 20 63 6f the IntPtr to co
5430: 6e 76 65 72 74 20 69 74 20 74 6f 20 61 20 73 74 nvert it to a st
5440: 72 69 6e 67 2c 20 74 68 65 6e 20 63 61 6c 6c 73 ring, then calls
5450: 0d 0a 20 20 20 20 2f 2f 2f 20 54 6f 44 61 74 65 .. /// ToDate
5460: 54 69 6d 65 28 29 20 6f 6e 20 74 68 65 20 73 74 Time() on the st
5470: 72 69 6e 67 20 74 6f 20 72 65 74 75 72 6e 20 61 ring to return a
5480: 20 44 61 74 65 54 69 6d 65 2e 0d 0a 20 20 20 20 DateTime...
5490: 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a /// </remarks>..
54a0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e /// <param n
54b0: 61 6d 65 3d 22 70 74 72 22 3e 41 20 70 6f 69 6e ame="ptr">A poin
54c0: 74 65 72 20 74 6f 20 74 68 65 20 55 54 46 2d 38 ter to the UTF-8
54d0: 20 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 3c encoded string<
54e0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f /param>.. ///
54f0: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6c 65 <param name="le
5500: 6e 22 3e 54 68 65 20 6c 65 6e 67 74 68 20 69 6e n">The length in
5510: 20 62 79 74 65 73 20 6f 66 20 74 68 65 20 73 74 bytes of the st
5520: 72 69 6e 67 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 ring</param>..
5530: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 /// <returns>T
5540: 68 65 20 70 61 72 73 65 64 20 44 61 74 65 54 69 he parsed DateTi
5550: 6d 65 20 76 61 6c 75 65 3c 2f 72 65 74 75 72 6e me value</return
5560: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c s>.. internal
5570: 20 44 61 74 65 54 69 6d 65 20 54 6f 44 61 74 65 DateTime ToDate
5580: 54 69 6d 65 28 49 6e 74 50 74 72 20 70 74 72 2c Time(IntPtr ptr,
5590: 20 69 6e 74 20 6c 65 6e 29 0d 0a 20 20 20 20 7b int len).. {
55a0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 .. return T
55b0: 6f 44 61 74 65 54 69 6d 65 28 54 6f 53 74 72 69 oDateTime(ToStri
55c0: 6e 67 28 70 74 72 2c 20 6c 65 6e 29 29 3b 0d 0a ng(ptr, len));..
55d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 65 6e }.... #en
55e0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f dregion.... /
55f0: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 // <summary>..
5600: 20 20 2f 2f 2f 20 53 6d 61 72 74 20 6d 65 74 68 /// Smart meth
5610: 6f 64 20 6f 66 20 73 70 6c 69 74 74 69 6e 67 20 od of splitting
5620: 61 20 73 74 72 69 6e 67 2e 20 20 53 6b 69 70 73 a string. Skips
5630: 20 71 75 6f 74 65 64 20 65 6c 65 6d 65 6e 74 73 quoted elements
5640: 2c 20 72 65 6d 6f 76 65 73 20 74 68 65 20 71 75 , removes the qu
5650: 6f 74 65 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c otes... /// <
5660: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f /summary>.. /
5670: 2f 2f 20 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 // <remarks>..
5680: 20 20 2f 2f 2f 20 54 68 69 73 20 73 70 6c 69 74 /// This split
5690: 20 66 75 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 function works
56a0: 73 6f 6d 65 77 68 61 74 20 6c 69 6b 65 20 74 68 somewhat like th
56b0: 65 20 53 74 72 69 6e 67 2e 53 70 6c 69 74 28 29 e String.Split()
56c0: 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 61 function in tha
56d0: 74 20 69 74 20 62 72 65 61 6b 73 20 61 70 61 72 t it breaks apar
56e0: 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 0d t a string into.
56f0: 0a 20 20 20 20 2f 2f 2f 20 70 69 65 63 65 73 20 . /// pieces
5700: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 and returns the
5710: 70 69 65 63 65 73 20 61 73 20 61 6e 20 61 72 72 pieces as an arr
5720: 61 79 2e 20 20 54 68 65 20 70 72 69 6d 61 72 79 ay. The primary
5730: 20 64 69 66 66 65 72 65 6e 63 65 73 20 61 72 65 differences are
5740: 3a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 6c 69 73 74 :.. /// <list
5750: 20 74 79 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d type="bullet">.
5760: 0a 20 20 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c . /// <item><
5770: 64 65 73 63 72 69 70 74 69 6f 6e 3e 4f 6e 6c 79 description>Only
5780: 20 6f 6e 65 20 63 68 61 72 61 63 74 65 72 20 63 one character c
5790: 61 6e 20 62 65 20 70 72 6f 76 69 64 65 64 20 61 an be provided a
57a0: 73 20 61 20 73 65 70 61 72 61 74 6f 72 20 63 68 s a separator ch
57b0: 61 72 61 63 74 65 72 3c 2f 64 65 73 63 72 69 70 aracter</descrip
57c0: 74 69 6f 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 tion></item>..
57d0: 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 3c 64 65 73 /// <item><des
57e0: 63 72 69 70 74 69 6f 6e 3e 51 75 6f 74 65 64 20 cription>Quoted
57f0: 74 65 78 74 20 69 6e 73 69 64 65 20 74 68 65 20 text inside the
5800: 73 74 72 69 6e 67 20 69 73 20 73 6b 69 70 70 65 string is skippe
5810: 64 20 6f 76 65 72 20 77 68 65 6e 20 73 65 61 72 d over when sear
5820: 63 68 69 6e 67 20 66 6f 72 20 74 68 65 20 73 65 ching for the se
5830: 70 61 72 61 74 6f 72 2c 20 61 6e 64 20 74 68 65 parator, and the
5840: 20 71 75 6f 74 65 73 20 61 72 65 20 72 65 6d 6f quotes are remo
5850: 76 65 64 2e 3c 2f 64 65 73 63 72 69 70 74 69 6f ved.</descriptio
5860: 6e 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20 20 20 2f n></item>.. /
5870: 2f 2f 20 3c 2f 6c 69 73 74 3e 0d 0a 20 20 20 20 // </list>..
5880: 2f 2f 2f 20 54 68 75 73 2c 20 69 66 20 73 70 6c /// Thus, if spl
5890: 69 74 74 69 6e 67 20 74 68 65 20 66 6f 6c 6c 6f itting the follo
58a0: 77 69 6e 67 20 73 74 72 69 6e 67 20 6c 6f 6f 6b wing string look
58b0: 69 6e 67 20 66 6f 72 20 61 20 63 6f 6d 6d 61 3a ing for a comma:
58c0: 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4f <br/>.. /// O
58d0: 6e 65 2c 54 77 6f 2c 20 22 54 68 72 65 65 2c 20 ne,Two, "Three,
58e0: 46 6f 75 72 22 2c 20 46 69 76 65 3c 62 72 2f 3e Four", Five<br/>
58f0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d .. /// <br/>.
5900: 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 72 65 73 . /// The res
5910: 75 6c 74 69 6e 67 20 61 72 72 61 79 20 77 6f 75 ulting array wou
5920: 6c 64 20 63 6f 6e 74 61 69 6e 3c 62 72 2f 3e 0d ld contain<br/>.
5930: 0a 20 20 20 20 2f 2f 2f 20 5b 30 5d 20 4f 6e 65 . /// [0] One
5940: 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f 2f 2f 20 5b <br/>.. /// [
5950: 31 5d 20 54 77 6f 3c 62 72 2f 3e 0d 0a 20 20 20 1] Two<br/>..
5960: 20 2f 2f 2f 20 5b 32 5d 20 54 68 72 65 65 2c 20 /// [2] Three,
5970: 46 6f 75 72 3c 62 72 2f 3e 0d 0a 20 20 20 20 2f Four<br/>.. /
5980: 2f 2f 20 5b 33 5d 20 46 69 76 65 3c 62 72 2f 3e // [3] Five<br/>
5990: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 62 72 2f 3e 0d .. /// <br/>.
59a0: 0a 20 20 20 20 2f 2f 2f 20 4e 6f 74 65 20 74 68 . /// Note th
59b0: 61 74 20 74 68 65 20 6c 65 61 64 69 6e 67 20 61 at the leading a
59c0: 6e 64 20 74 72 61 69 6c 69 6e 67 20 73 70 61 63 nd trailing spac
59d0: 65 73 20 77 65 72 65 20 72 65 6d 6f 76 65 64 20 es were removed
59e0: 66 72 6f 6d 20 65 61 63 68 20 69 74 65 6d 20 64 from each item d
59f0: 75 72 69 6e 67 20 74 68 65 20 73 70 6c 69 74 2e uring the split.
5a00: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 .. /// </rema
5a10: 72 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 rks>.. /// <p
5a20: 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 72 63 aram name="sourc
5a30: 65 22 3e 53 6f 75 72 63 65 20 73 74 72 69 6e 67 e">Source string
5a40: 20 74 6f 20 73 70 6c 69 74 20 61 70 61 72 74 3c to split apart<
5a50: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f /param>.. ///
5a60: 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 65 <param name="se
5a70: 70 61 72 61 74 6f 72 22 3e 53 65 70 61 72 61 74 parator">Separat
5a80: 6f 72 20 63 68 61 72 61 63 74 65 72 3c 2f 70 61 or character</pa
5a90: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 ram>.. /// <r
5aa0: 65 74 75 72 6e 73 3e 41 20 73 74 72 69 6e 67 20 eturns>A string
5ab0: 61 72 72 61 79 20 6f 66 20 74 68 65 20 73 70 6c array of the spl
5ac0: 69 74 20 75 70 20 65 6c 65 6d 65 6e 74 73 3c 2f it up elements</
5ad0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 returns>.. pu
5ae0: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 blic static stri
5af0: 6e 67 5b 5d 20 53 70 6c 69 74 28 73 74 72 69 6e ng[] Split(strin
5b00: 67 20 73 6f 75 72 63 65 2c 20 63 68 61 72 20 73 g source, char s
5b10: 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 20 20 7b eparator).. {
5b20: 0d 0a 20 20 20 20 20 20 63 68 61 72 5b 5d 20 74 .. char[] t
5b30: 6f 6b 73 20 3d 20 6e 65 77 20 63 68 61 72 5b 32 oks = new char[2
5b40: 5d 20 7b 20 27 5c 22 27 2c 20 73 65 70 61 72 61 ] { '\"', separa
5b50: 74 6f 72 20 7d 3b 0d 0a 20 20 20 20 20 20 63 68 tor };.. ch
5b60: 61 72 5b 5d 20 71 75 6f 74 20 3d 20 6e 65 77 20 ar[] quot = new
5b70: 63 68 61 72 5b 31 5d 20 7b 20 27 5c 22 27 20 7d char[1] { '\"' }
5b80: 3b 0d 0a 20 20 20 20 20 20 69 6e 74 20 6e 20 3d ;.. int n =
5b90: 20 30 3b 0d 0a 20 20 20 20 20 20 4c 69 73 74 3c 0;.. List<
5ba0: 73 74 72 69 6e 67 3e 20 6c 73 20 3d 20 6e 65 77 string> ls = new
5bb0: 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 28 29 3b List<string>();
5bc0: 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 .. string s
5bd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 77 68 69 6c 65 ;.... while
5be0: 20 28 73 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 (source.Length
5bf0: 3e 20 30 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 > 0).. {..
5c00: 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 63 n = sourc
5c10: 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 74 6f 6b e.IndexOfAny(tok
5c20: 73 2c 20 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 s, n);..
5c30: 69 66 20 28 6e 20 3d 3d 20 2d 31 29 20 62 72 65 if (n == -1) bre
5c40: 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 ak;.. if
5c50: 28 73 6f 75 72 63 65 5b 6e 5d 20 3d 3d 20 74 6f (source[n] == to
5c60: 6b 73 5b 30 5d 29 0d 0a 20 20 20 20 20 20 20 20 ks[0])..
5c70: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 73 {.. //s
5c80: 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 52 ource = source.R
5c90: 65 6d 6f 76 65 28 6e 2c 20 31 29 3b 0d 0a 20 20 emove(n, 1);..
5ca0: 20 20 20 20 20 20 20 20 6e 20 3d 20 73 6f 75 72 n = sour
5cb0: 63 65 2e 49 6e 64 65 78 4f 66 41 6e 79 28 71 75 ce.IndexOfAny(qu
5cc0: 6f 74 2c 20 6e 20 2b 20 31 29 3b 0d 0a 20 20 20 ot, n + 1);..
5cd0: 20 20 20 20 20 20 20 69 66 20 28 6e 20 3d 3d 20 if (n ==
5ce0: 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b -1).. {
5cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f .. //
5d00: 73 6f 75 72 63 65 20 3d 20 22 5c 22 22 20 2b 20 source = "\"" +
5d10: 73 6f 75 72 63 65 3b 0d 0a 20 20 20 20 20 20 20 source;..
5d20: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 break;..
5d30: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
5d40: 20 20 20 20 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 n++;..
5d50: 20 20 20 20 2f 2f 73 6f 75 72 63 65 20 3d 20 73 //source = s
5d60: 6f 75 72 63 65 2e 52 65 6d 6f 76 65 28 6e 2c 20 ource.Remove(n,
5d70: 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 1);.. }..
5d80: 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 else..
5d90: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 {..
5da0: 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 53 75 s = source.Su
5db0: 62 73 74 72 69 6e 67 28 30 2c 20 6e 29 2e 54 72 bstring(0, n).Tr
5dc0: 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 im();..
5dd0: 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 if (s.Length >
5de0: 31 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 1 && s[0] == quo
5df0: 74 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 t[0] && s[s.Leng
5e00: 74 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 th - 1] == s[0])
5e10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 20 .. s
5e20: 3d 20 73 2e 53 75 62 73 74 72 69 6e 67 28 31 2c = s.Substring(1,
5e30: 20 73 2e 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d s.Length - 2);.
5e40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 73 6f 75 ... sou
5e50: 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 53 75 62 rce = source.Sub
5e60: 73 74 72 69 6e 67 28 6e 20 2b 20 31 29 2e 54 72 string(n + 1).Tr
5e70: 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 im();..
5e80: 20 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 if (s.Length >
5e90: 30 29 20 6c 73 2e 41 64 64 28 73 29 3b 0d 0a 20 0) ls.Add(s);..
5ea0: 20 20 20 20 20 20 20 20 20 6e 20 3d 20 30 3b 0d n = 0;.
5eb0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 . }..
5ec0: 20 20 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 73 }.. if (s
5ed0: 6f 75 72 63 65 2e 4c 65 6e 67 74 68 20 3e 20 30 ource.Length > 0
5ee0: 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 ).. {..
5ef0: 20 20 20 20 73 20 3d 20 73 6f 75 72 63 65 2e 54 s = source.T
5f00: 72 69 6d 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 rim();..
5f10: 69 66 20 28 73 2e 4c 65 6e 67 74 68 20 3e 20 31 if (s.Length > 1
5f20: 20 26 26 20 73 5b 30 5d 20 3d 3d 20 71 75 6f 74 && s[0] == quot
5f30: 5b 30 5d 20 26 26 20 73 5b 73 2e 4c 65 6e 67 74 [0] && s[s.Lengt
5f40: 68 20 2d 20 31 5d 20 3d 3d 20 73 5b 30 5d 29 0d h - 1] == s[0]).
5f50: 0a 20 20 20 20 20 20 20 20 20 20 73 20 3d 20 73 . s = s
5f60: 2e 53 75 62 73 74 72 69 6e 67 28 31 2c 20 73 2e .Substring(1, s.
5f70: 4c 65 6e 67 74 68 20 2d 20 32 29 3b 0d 0a 20 20 Length - 2);..
5f80: 20 20 20 20 20 20 6c 73 2e 41 64 64 28 73 29 3b ls.Add(s);
5f90: 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 .. }....
5fa0: 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 20 3d string[] ar =
5fb0: 20 6e 65 77 20 73 74 72 69 6e 67 5b 6c 73 2e 43 new string[ls.C
5fc0: 6f 75 6e 74 5d 3b 0d 0a 20 20 20 20 20 20 6c 73 ount];.. ls
5fd0: 2e 43 6f 70 79 54 6f 28 61 72 2c 20 30 29 3b 0d .CopyTo(ar, 0);.
5fe0: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 ... return
5ff0: 61 72 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 ar;.. }....
6000: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
6010: 0a 20 20 20 20 2f 2f 2f 20 53 70 6c 69 74 73 20 . /// Splits
6020: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 the specified st
6030: 72 69 6e 67 20 69 6e 74 6f 20 6d 75 6c 74 69 70 ring into multip
6040: 6c 65 20 73 74 72 69 6e 67 73 20 62 61 73 65 64 le strings based
6050: 20 6f 6e 20 61 20 73 65 70 61 72 61 74 6f 72 0d on a separator.
6060: 0a 20 20 20 20 2f 2f 2f 20 61 6e 64 20 72 65 74 . /// and ret
6070: 75 72 6e 73 20 74 68 65 20 72 65 73 75 6c 74 20 urns the result
6080: 61 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 73 as an array of s
6090: 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f 2f 2f trings... ///
60a0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
60b0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 /// <param name
60c0: 3d 22 76 61 6c 75 65 22 3e 0d 0a 20 20 20 20 2f ="value">.. /
60d0: 2f 2f 20 54 68 65 20 73 74 72 69 6e 67 20 74 6f // The string to
60e0: 20 73 70 6c 69 74 20 69 6e 74 6f 20 70 69 65 63 split into piec
60f0: 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 es based on the
6100: 73 65 70 61 72 61 74 6f 72 20 63 68 61 72 61 63 separator charac
6110: 74 65 72 2e 20 20 49 66 0d 0a 20 20 20 20 2f 2f ter. If.. //
6120: 2f 20 74 68 69 73 20 73 74 72 69 6e 67 20 69 73 / this string is
6130: 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 20 77 69 6c 6c null, null will
6140: 20 61 6c 77 61 79 73 20 62 65 20 72 65 74 75 72 always be retur
6150: 6e 65 64 2e 20 20 49 66 20 74 68 69 73 20 73 74 ned. If this st
6160: 72 69 6e 67 20 69 73 0d 0a 20 20 20 20 2f 2f 2f ring is.. ///
6170: 20 65 6d 70 74 79 2c 20 61 6e 20 61 72 72 61 79 empty, an array
6180: 20 6f 66 20 7a 65 72 6f 20 73 74 72 69 6e 67 73 of zero strings
6190: 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 will always be
61a0: 72 65 74 75 72 6e 65 64 2e 0d 0a 20 20 20 20 2f returned... /
61b0: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 // </param>..
61c0: 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 /// <param name
61d0: 3d 22 73 65 70 61 72 61 74 6f 72 22 3e 0d 0a 20 ="separator">..
61e0: 20 20 20 2f 2f 2f 20 54 68 65 20 63 68 61 72 61 /// The chara
61f0: 63 74 65 72 20 75 73 65 64 20 74 6f 20 64 69 76 cter used to div
6200: 69 64 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c ide the original
6210: 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 73 75 62 string into sub
6220: 2d 73 74 72 69 6e 67 73 2e 0d 0a 20 20 20 20 2f -strings... /
6230: 2f 2f 20 54 68 69 73 20 63 68 61 72 61 63 74 65 // This characte
6240: 72 20 63 61 6e 6e 6f 74 20 62 65 20 61 20 62 61 r cannot be a ba
6250: 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 6f 75 ckslash or a dou
6260: 62 6c 65 2d 71 75 6f 74 65 3b 20 6f 74 68 65 72 ble-quote; other
6270: 77 69 73 65 2c 20 6e 6f 0d 0a 20 20 20 20 2f 2f wise, no.. //
6280: 2f 20 77 6f 72 6b 20 77 69 6c 6c 20 62 65 20 70 / work will be p
6290: 65 72 66 6f 72 6d 65 64 20 61 6e 64 20 6e 75 6c erformed and nul
62a0: 6c 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e l will be return
62b0: 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 ed... /// </p
62c0: 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c aram>.. /// <
62d0: 70 61 72 61 6d 20 6e 61 6d 65 3d 22 6b 65 65 70 param name="keep
62e0: 51 75 6f 74 65 22 3e 0d 0a 20 20 20 20 2f 2f 2f Quote">.. ///
62f0: 20 49 66 20 74 68 69 73 20 70 61 72 61 6d 65 74 If this paramet
6300: 65 72 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 er is non-zero,
6310: 61 6c 6c 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 all double-quote
6320: 20 63 68 61 72 61 63 74 65 72 73 20 77 69 6c 6c characters will
6330: 20 62 65 0d 0a 20 20 20 20 2f 2f 2f 20 72 65 74 be.. /// ret
6340: 61 69 6e 65 64 20 69 6e 20 74 68 65 20 72 65 74 ained in the ret
6350: 75 72 6e 65 64 20 6c 69 73 74 20 6f 66 20 73 74 urned list of st
6360: 72 69 6e 67 73 3b 20 6f 74 68 65 72 77 69 73 65 rings; otherwise
6370: 2c 20 74 68 65 79 20 77 69 6c 6c 20 62 65 0d 0a , they will be..
6380: 20 20 20 20 2f 2f 2f 20 64 72 6f 70 70 65 64 2e /// dropped.
6390: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 70 61 72 61 .. /// </para
63a0: 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 m>.. /// <par
63b0: 61 6d 20 6e 61 6d 65 3d 22 65 72 72 6f 72 22 3e am name="error">
63c0: 0d 0a 20 20 20 20 2f 2f 2f 20 55 70 6f 6e 20 66 .. /// Upon f
63d0: 61 69 6c 75 72 65 2c 20 74 68 69 73 20 70 61 72 ailure, this par
63e0: 61 6d 65 74 65 72 20 77 69 6c 6c 20 62 65 20 6d ameter will be m
63f0: 6f 64 69 66 69 65 64 20 74 6f 20 63 6f 6e 74 61 odified to conta
6400: 69 6e 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 in an appropriat
6410: 65 0d 0a 20 20 20 20 2f 2f 2f 20 65 72 72 6f 72 e.. /// error
6420: 20 6d 65 73 73 61 67 65 2e 0d 0a 20 20 20 20 2f message... /
6430: 2f 2f 20 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 // </param>..
6440: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a /// <returns>..
6450: 20 20 20 20 2f 2f 2f 20 54 68 65 20 6e 65 77 20 /// The new
6460: 61 72 72 61 79 20 6f 66 20 73 74 72 69 6e 67 73 array of strings
6470: 20 6f 72 20 6e 75 6c 6c 20 69 66 20 74 68 65 20 or null if the
6480: 69 6e 70 75 74 20 73 74 72 69 6e 67 20 69 73 20 input string is
6490: 6e 75 6c 6c 20 2d 4f 52 2d 20 74 68 65 0d 0a 20 null -OR- the..
64a0: 20 20 20 2f 2f 2f 20 73 65 70 61 72 61 74 6f 72 /// separator
64b0: 20 63 68 61 72 61 63 74 65 72 20 69 73 20 61 20 character is a
64c0: 62 61 63 6b 73 6c 61 73 68 20 6f 72 20 61 20 64 backslash or a d
64d0: 6f 75 62 6c 65 2d 71 75 6f 74 65 20 2d 4f 52 2d ouble-quote -OR-
64e0: 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 the string..
64f0: 20 2f 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e /// contains an
6500: 20 75 6e 62 61 6c 61 6e 63 65 64 20 62 61 63 6b unbalanced back
6510: 73 6c 61 73 68 20 6f 72 20 64 6f 75 62 6c 65 2d slash or double-
6520: 71 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 2e quote character.
6530: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 72 65 74 75 .. /// </retu
6540: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e rns>.. intern
6550: 61 6c 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 al static string
6560: 5b 5d 20 4e 65 77 53 70 6c 69 74 28 0d 0a 20 20 [] NewSplit(..
6570: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c string val
6580: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 63 68 61 ue,.. cha
6590: 72 20 73 65 70 61 72 61 74 6f 72 2c 0d 0a 20 20 r separator,..
65a0: 20 20 20 20 20 20 62 6f 6f 6c 20 6b 65 65 70 51 bool keepQ
65b0: 75 6f 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 72 uote,.. r
65c0: 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d ef string error.
65d0: 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 . )..
65e0: 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 {.. const
65f0: 20 63 68 61 72 20 45 73 63 61 70 65 43 68 61 72 char EscapeChar
6600: 20 3d 20 27 5c 5c 27 3b 0d 0a 20 20 20 20 20 20 = '\\';..
6610: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 51 75 6f const char Quo
6620: 74 65 43 68 61 72 20 3d 20 27 5c 22 27 3b 0d 0a teChar = '\"';..
6630: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 .. //..
6640: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 // NOTE: I
6650: 74 20 69 73 20 69 6c 6c 65 67 61 6c 20 66 6f 72 t is illegal for
6660: 20 74 68 65 20 73 65 70 61 72 61 74 6f 72 20 63 the separator c
6670: 68 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 65 haracter to be e
6680: 69 74 68 65 72 20 61 0d 0a 20 20 20 20 20 20 20 ither a..
6690: 20 2f 2f 20 20 20 20 20 20 20 62 61 63 6b 73 6c // backsl
66a0: 61 73 68 20 6f 72 20 61 20 64 6f 75 62 6c 65 2d ash or a double-
66b0: 71 75 6f 74 65 20 62 65 63 61 75 73 65 20 62 6f quote because bo
66c0: 74 68 20 6f 66 20 74 68 6f 73 65 20 63 68 61 72 th of those char
66d0: 61 63 74 65 72 73 0d 0a 20 20 20 20 20 20 20 20 acters..
66e0: 2f 2f 20 20 20 20 20 20 20 61 72 65 20 75 73 65 // are use
66f0: 64 20 66 6f 72 20 65 73 63 61 70 69 6e 67 20 6f d for escaping o
6700: 74 68 65 72 20 63 68 61 72 61 63 74 65 72 73 20 ther characters
6710: 28 65 2e 67 2e 20 74 68 65 20 73 65 70 61 72 61 (e.g. the separa
6720: 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 tor.. //
6730: 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 29 character)
6740: 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 ... //..
6750: 20 20 20 20 20 20 20 69 66 20 28 28 73 65 70 61 if ((sepa
6760: 72 61 74 6f 72 20 3d 3d 20 45 73 63 61 70 65 43 rator == EscapeC
6770: 68 61 72 29 20 7c 7c 20 28 73 65 70 61 72 61 74 har) || (separat
6780: 6f 72 20 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 or == QuoteChar)
6790: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 ).. {..
67a0: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 error
67b0: 3d 20 22 73 65 70 61 72 61 74 6f 72 20 63 68 61 = "separator cha
67c0: 72 61 63 74 65 72 20 63 61 6e 6e 6f 74 20 62 65 racter cannot be
67d0: 20 74 68 65 20 65 73 63 61 70 65 20 6f 72 20 71 the escape or q
67e0: 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 73 22 uote characters"
67f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ;.. r
6800: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 eturn null;..
6810: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 }....
6820: 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e if (value == n
6830: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d ull).. {.
6840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 . err
6850: 6f 72 20 3d 20 22 73 74 72 69 6e 67 20 76 61 6c or = "string val
6860: 75 65 20 74 6f 20 73 70 6c 69 74 20 63 61 6e 6e ue to split cann
6870: 6f 74 20 62 65 20 6e 75 6c 6c 22 3b 0d 0a 20 20 ot be null";..
6880: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return
6890: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 null;..
68a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 }.... int
68b0: 20 6c 65 6e 67 74 68 20 3d 20 76 61 6c 75 65 2e length = value.
68c0: 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 Length;....
68d0: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3d 3d if (length ==
68e0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 0)..
68f0: 20 72 65 74 75 72 6e 20 6e 65 77 20 73 74 72 69 return new stri
6900: 6e 67 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 ng[0];....
6910: 20 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e 20 6c List<string> l
6920: 69 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 73 ist = new List<s
6930: 74 72 69 6e 67 3e 28 29 3b 0d 0a 20 20 20 20 20 tring>();..
6940: 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 StringBuilder
6950: 20 65 6c 65 6d 65 6e 74 20 3d 20 6e 65 77 20 53 element = new S
6960: 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d tringBuilder();.
6970: 0a 20 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 . int ind
6980: 65 78 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 ex = 0;..
6990: 20 62 6f 6f 6c 20 65 73 63 61 70 65 20 3d 20 66 bool escape = f
69a0: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 62 alse;.. b
69b0: 6f 6f 6c 20 71 75 6f 74 65 20 3d 20 66 61 6c 73 ool quote = fals
69c0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 77 68 e;.... wh
69d0: 69 6c 65 20 28 69 6e 64 65 78 20 3c 20 6c 65 6e ile (index < len
69e0: 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d gth).. {.
69f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 . cha
6a00: 72 20 63 68 61 72 61 63 74 65 72 20 3d 20 76 61 r character = va
6a10: 6c 75 65 5b 69 6e 64 65 78 2b 2b 5d 3b 0d 0a 0d lue[index++];...
6a20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
6a30: 28 65 73 63 61 70 65 29 0d 0a 20 20 20 20 20 20 (escape)..
6a40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 {..
6a50: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 //..
6a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 //
6a70: 48 41 43 4b 3a 20 4f 6e 6c 79 20 63 6f 6e 73 69 HACK: Only consi
6a80: 64 65 72 20 74 68 65 20 65 73 63 61 70 65 20 63 der the escape c
6a90: 68 61 72 61 63 74 65 72 20 74 6f 20 62 65 20 61 haracter to be a
6aa0: 6e 20 61 63 74 75 61 6c 0d 0a 20 20 20 20 20 20 n actual..
6ab0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 //
6ac0: 20 20 20 22 65 73 63 61 70 65 22 20 69 66 20 69 "escape" if i
6ad0: 74 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 t is followed by
6ae0: 20 61 20 72 65 73 65 72 76 65 64 20 63 68 61 72 a reserved char
6af0: 61 63 74 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 acter;..
6b00: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 //
6b10: 20 6f 74 68 65 72 77 69 73 65 2c 20 65 6d 69 74 otherwise, emit
6b20: 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 73 the original es
6b30: 63 61 70 65 20 63 68 61 72 61 63 74 65 72 20 61 cape character a
6b40: 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 nd..
6b50: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 // the
6b60: 20 63 75 72 72 65 6e 74 20 63 68 61 72 61 63 74 current charact
6b70: 65 72 20 69 6e 20 61 6e 20 65 66 66 6f 72 74 20 er in an effort
6b80: 74 6f 20 68 65 6c 70 20 70 72 65 73 65 72 76 65 to help preserve
6b90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
6ba0: 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 20 6f // the o
6bb0: 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 63 riginal string c
6bc0: 6f 6e 74 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20 ontent...
6bd0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 //..
6be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
6bf0: 28 28 63 68 61 72 61 63 74 65 72 20 21 3d 20 45 ((character != E
6c00: 73 63 61 70 65 43 68 61 72 29 20 26 26 0d 0a 20 scapeChar) &&..
6c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6c20: 20 20 20 28 63 68 61 72 61 63 74 65 72 20 21 3d (character !=
6c30: 20 51 75 6f 74 65 43 68 61 72 29 20 26 26 0d 0a QuoteChar) &&..
6c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6c50: 20 20 20 20 28 63 68 61 72 61 63 74 65 72 20 21 (character !
6c60: 3d 20 73 65 70 61 72 61 74 6f 72 29 29 0d 0a 20 = separator))..
6c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b {
6c80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
6c90: 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 70 element.Ap
6ca0: 70 65 6e 64 28 45 73 63 61 70 65 43 68 61 72 29 pend(EscapeChar)
6cb0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
6cc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 }....
6cd0: 20 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e element.
6ce0: 41 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 Append(character
6cf0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
6d00: 20 20 20 20 65 73 63 61 70 65 20 3d 20 66 61 6c escape = fal
6d10: 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 se;..
6d20: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
6d30: 65 6c 73 65 20 69 66 20 28 63 68 61 72 61 63 74 else if (charact
6d40: 65 72 20 3d 3d 20 45 73 63 61 70 65 43 68 61 72 er == EscapeChar
6d50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b ).. {
6d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
6d70: 20 20 65 73 63 61 70 65 20 3d 20 74 72 75 65 3b escape = true;
6d80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d .. }.
6d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 . els
6da0: 65 20 69 66 20 28 63 68 61 72 61 63 74 65 72 20 e if (character
6db0: 3d 3d 20 51 75 6f 74 65 43 68 61 72 29 0d 0a 20 == QuoteChar)..
6dc0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 {..
6dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
6de0: 20 28 6b 65 65 70 51 75 6f 74 65 29 0d 0a 20 20 (keepQuote)..
6df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6e00: 20 20 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 element.Append
6e10: 28 63 68 61 72 61 63 74 65 72 29 3b 0d 0a 0d 0a (character);....
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6e30: 71 75 6f 74 65 20 3d 20 21 71 75 6f 74 65 3b 0d quote = !quote;.
6e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a . }..
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 else
6e60: 20 69 66 20 28 63 68 61 72 61 63 74 65 72 20 3d if (character =
6e70: 3d 20 73 65 70 61 72 61 74 6f 72 29 0d 0a 20 20 = separator)..
6e80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 {..
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
6ea0: 28 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 20 (quote)..
6eb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 {..
6ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6ed0: 65 6c 65 6d 65 6e 74 2e 41 70 70 65 6e 64 28 63 element.Append(c
6ee0: 68 61 72 61 63 74 65 72 29 3b 0d 0a 20 20 20 20 haracter);..
6ef0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
6f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
6f10: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 lse..
6f20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 {..
6f30: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 list
6f40: 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 .Add(element.ToS
6f50: 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 tring());..
6f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 e
6f70: 6c 65 6d 65 6e 74 2e 4c 65 6e 67 74 68 20 3d 20 lement.Length =
6f80: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 0;..
6f90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
6fa0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
6fb0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 else..
6fc0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 {..
6fd0: 20 20 20 20 20 20 20 65 6c 65 6d 65 6e 74 2e 41 element.A
6fe0: 70 70 65 6e 64 28 63 68 61 72 61 63 74 65 72 29 ppend(character)
6ff0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d ;.. }
7000: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 .. }....
7010: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 //..
7020: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6e 20 75 // NOTE: An u
7030: 6e 62 61 6c 61 6e 63 65 64 20 65 73 63 61 70 65 nbalanced escape
7040: 20 6f 72 20 71 75 6f 74 65 20 63 68 61 72 61 63 or quote charac
7050: 74 65 72 20 69 6e 20 74 68 65 20 73 74 72 69 6e ter in the strin
7060: 67 20 69 73 0d 0a 20 20 20 20 20 20 20 20 2f 2f g is.. //
7070: 20 20 20 20 20 20 20 63 6f 6e 73 69 64 65 72 65 considere
7080: 64 20 74 6f 20 62 65 20 61 20 66 61 74 61 6c 20 d to be a fatal
7090: 65 72 72 6f 72 3b 20 74 68 65 72 65 66 6f 72 65 error; therefore
70a0: 2c 20 72 65 74 75 72 6e 20 6e 75 6c 6c 2e 0d 0a , return null...
70b0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 //..
70c0: 20 20 20 20 69 66 20 28 65 73 63 61 70 65 20 7c if (escape |
70d0: 7c 20 71 75 6f 74 65 29 0d 0a 20 20 20 20 20 20 | quote)..
70e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 {..
70f0: 20 65 72 72 6f 72 20 3d 20 22 75 6e 62 61 6c 61 error = "unbala
7100: 6e 63 65 64 20 65 73 63 61 70 65 20 6f 72 20 71 nced escape or q
7110: 75 6f 74 65 20 63 68 61 72 61 63 74 65 72 20 66 uote character f
7120: 6f 75 6e 64 22 3b 0d 0a 20 20 20 20 20 20 20 20 ound";..
7130: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b return null;
7140: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 .. }....
7150: 20 20 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 if (eleme
7160: 6e 74 2e 4c 65 6e 67 74 68 20 3e 20 30 29 0d 0a nt.Length > 0)..
7170: 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 list
7180: 2e 41 64 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 .Add(element.ToS
7190: 74 72 69 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 tring());....
71a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 return list
71b0: 2e 54 6f 41 72 72 61 79 28 29 3b 0d 0a 20 20 20 .ToArray();..
71c0: 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 }.... /// <s
71d0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f ummary>.. ///
71e0: 20 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75 65 Convert a value
71f0: 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 to true or fals
7200: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 e... /// </su
7210: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 mmary>.. ///
7220: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 73 6f 75 <param name="sou
7230: 72 63 65 22 3e 41 20 73 74 72 69 6e 67 20 6f 72 rce">A string or
7240: 20 6e 75 6d 62 65 72 20 72 65 70 72 65 73 65 6e number represen
7250: 74 69 6e 67 20 74 72 75 65 20 6f 72 20 66 61 6c ting true or fal
7260: 73 65 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 se</param>..
7270: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 3c 2f 72 /// <returns></r
7280: 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 eturns>.. pub
7290: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 lic static bool
72a0: 54 6f 42 6f 6f 6c 65 61 6e 28 6f 62 6a 65 63 74 ToBoolean(object
72b0: 20 73 6f 75 72 63 65 29 0d 0a 20 20 20 20 7b 0d source).. {.
72c0: 0a 20 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 . if (sourc
72d0: 65 20 69 73 20 62 6f 6f 6c 29 20 72 65 74 75 72 e is bool) retur
72e0: 6e 20 28 62 6f 6f 6c 29 73 6f 75 72 63 65 3b 0d n (bool)source;.
72f0: 0a 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 ... return
7300: 54 6f 42 6f 6f 6c 65 61 6e 28 73 6f 75 72 63 65 ToBoolean(source
7310: 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 .ToString());..
7320: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 }.... ///
7330: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f <summary>.. /
7340: 2f 2f 20 43 6f 6e 76 65 72 74 20 61 20 73 74 72 // Convert a str
7350: 69 6e 67 20 74 6f 20 74 72 75 65 20 6f 72 20 66 ing to true or f
7360: 61 6c 73 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c alse... /// <
7370: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f /summary>.. /
7380: 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 // <param name="
7390: 73 6f 75 72 63 65 22 3e 41 20 73 74 72 69 6e 67 source">A string
73a0: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 72 representing tr
73b0: 75 65 20 6f 72 20 66 61 6c 73 65 3c 2f 70 61 72 ue or false</par
73c0: 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 am>.. /// <re
73d0: 74 75 72 6e 73 3e 3c 2f 72 65 74 75 72 6e 73 3e turns></returns>
73e0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 6d 61 72 .. /// <remar
73f0: 6b 73 3e 0d 0a 20 20 20 20 2f 2f 2f 20 22 79 65 ks>.. /// "ye
7400: 73 22 2c 20 22 6e 6f 22 2c 20 22 79 22 2c 20 22 s", "no", "y", "
7410: 6e 22 2c 20 22 30 22 2c 20 22 31 22 2c 20 22 6f n", "0", "1", "o
7420: 6e 22 2c 20 22 6f 66 66 22 20 61 73 20 77 65 6c n", "off" as wel
7430: 6c 20 61 73 20 42 6f 6f 6c 65 61 6e 2e 46 61 6c l as Boolean.Fal
7440: 73 65 53 74 72 69 6e 67 20 61 6e 64 20 42 6f 6f seString and Boo
7450: 6c 65 61 6e 2e 54 72 75 65 53 74 72 69 6e 67 20 lean.TrueString
7460: 77 69 6c 6c 20 61 6c 6c 20 62 65 0d 0a 20 20 20 will all be..
7470: 20 2f 2f 2f 20 63 6f 6e 76 65 72 74 65 64 20 74 /// converted t
7480: 6f 20 61 20 70 72 6f 70 65 72 20 62 6f 6f 6c 65 o a proper boole
7490: 61 6e 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 2f an value... /
74a0: 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 3e 0d 0a 20 // </remarks>..
74b0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 public static
74c0: 20 62 6f 6f 6c 20 54 6f 42 6f 6f 6c 65 61 6e 28 bool ToBoolean(
74d0: 73 74 72 69 6e 67 20 73 6f 75 72 63 65 29 0d 0a string source)..
74e0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 {.. if
74f0: 28 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 (String.Compare(
7500: 73 6f 75 72 63 65 2c 20 62 6f 6f 6c 2e 54 72 75 source, bool.Tru
7510: 65 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 eString, StringC
7520: 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 omparison.Ordina
7530: 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 lIgnoreCase) ==
7540: 30 29 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0) return true;.
7550: 0a 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 . else if (
7560: 53 74 72 69 6e 67 2e 43 6f 6d 70 61 72 65 28 73 String.Compare(s
7570: 6f 75 72 63 65 2c 20 62 6f 6f 6c 2e 46 61 6c 73 ource, bool.Fals
7580: 65 53 74 72 69 6e 67 2c 20 53 74 72 69 6e 67 43 eString, StringC
7590: 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 omparison.Ordina
75a0: 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 lIgnoreCase) ==
75b0: 30 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0) return false;
75c0: 0d 0a 0d 0a 20 20 20 20 20 20 73 77 69 74 63 68 .... switch
75d0: 28 73 6f 75 72 63 65 2e 54 6f 4c 6f 77 65 72 28 (source.ToLower(
75e0: 43 75 6c 74 75 72 65 49 6e 66 6f 2e 49 6e 76 61 CultureInfo.Inva
75f0: 72 69 61 6e 74 43 75 6c 74 75 72 65 29 29 0d 0a riantCulture))..
7600: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 {..
7610: 20 63 61 73 65 20 22 79 65 73 22 3a 0d 0a 20 20 case "yes":..
7620: 20 20 20 20 20 20 63 61 73 65 20 22 79 22 3a 0d case "y":.
7630: 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 22 31 . case "1
7640: 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 ":.. case
7650: 20 22 6f 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 "on":..
7660: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a return true;..
7670: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 6e 6f case "no
7680: 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 ":.. case
7690: 20 22 6e 22 3a 0d 0a 20 20 20 20 20 20 20 20 63 "n":.. c
76a0: 61 73 65 20 22 30 22 3a 0d 0a 20 20 20 20 20 20 ase "0":..
76b0: 20 20 63 61 73 65 20 22 6f 66 66 22 3a 0d 0a 20 case "off":..
76c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
76d0: 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 false;..
76e0: 64 65 66 61 75 6c 74 3a 0d 0a 20 20 20 20 20 20 default:..
76f0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 throw new Ar
7700: 67 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 gumentException(
7710: 22 73 6f 75 72 63 65 22 29 3b 0d 0a 20 20 20 20 "source");..
7720: 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 }.. }....
7730: 20 20 23 72 65 67 69 6f 6e 20 54 79 70 65 20 43 #region Type C
7740: 6f 6e 76 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 onversions..
7750: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
7760: 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 6e 65 /// Determine
7770: 73 20 74 68 65 20 64 61 74 61 20 74 79 70 65 20 s the data type
7780: 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61 of a column in a
7790: 20 73 74 61 74 65 6d 65 6e 74 0d 0a 20 20 20 20 statement..
77a0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
77b0: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e /// <param n
77c0: 61 6d 65 3d 22 73 74 6d 74 22 3e 54 68 65 20 73 ame="stmt">The s
77d0: 74 61 74 65 6d 65 6e 74 20 74 6f 20 72 65 74 72 tatement to retr
77e0: 69 65 76 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e ieve information
77f0: 20 66 6f 72 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 for</param>..
7800: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d /// <param nam
7810: 65 3d 22 69 22 3e 54 68 65 20 63 6f 6c 75 6d 6e e="i">The column
7820: 20 74 6f 20 72 65 74 72 69 65 76 65 20 74 79 70 to retrieve typ
7830: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e e information on
7840: 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f </param>.. //
7850: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 / <param name="t
7860: 79 70 22 3e 54 68 65 20 53 51 4c 69 74 65 54 79 yp">The SQLiteTy
7870: 70 65 20 74 6f 20 72 65 63 65 69 76 65 20 74 68 pe to receive th
7880: 65 20 61 66 66 69 6e 69 74 79 20 66 6f 72 20 74 e affinity for t
7890: 68 65 20 67 69 76 65 6e 20 63 6f 6c 75 6d 6e 3c he given column<
78a0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 69 6e 74 /param>.. int
78b0: 65 72 6e 61 6c 20 73 74 61 74 69 63 20 76 6f 69 ernal static voi
78c0: 64 20 43 6f 6c 75 6d 6e 54 6f 54 79 70 65 28 53 d ColumnToType(S
78d0: 51 4c 69 74 65 53 74 61 74 65 6d 65 6e 74 20 73 QLiteStatement s
78e0: 74 6d 74 2c 20 69 6e 74 20 69 2c 20 53 51 4c 69 tmt, int i, SQLi
78f0: 74 65 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 teType typ)..
7900: 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 2e 54 79 {.. typ.Ty
7910: 70 65 20 3d 20 54 79 70 65 4e 61 6d 65 54 6f 44 pe = TypeNameToD
7920: 62 54 79 70 65 28 73 74 6d 74 2e 5f 73 71 6c 2e bType(stmt._sql.
7930: 43 6f 6c 75 6d 6e 54 79 70 65 28 73 74 6d 74 2c ColumnType(stmt,
7940: 20 69 2c 20 6f 75 74 20 74 79 70 2e 41 66 66 69 i, out typ.Affi
7950: 6e 69 74 79 29 29 3b 0d 0a 20 20 20 20 7d 0d 0a nity));.. }..
7960: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
7970: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e ry>.. /// Con
7980: 76 65 72 74 73 20 61 20 53 51 4c 69 74 65 54 79 verts a SQLiteTy
7990: 70 65 20 74 6f 20 61 20 2e 4e 45 54 20 54 79 70 pe to a .NET Typ
79a0: 65 20 6f 62 6a 65 63 74 0d 0a 20 20 20 20 2f 2f e object.. //
79b0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
79c0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d /// <param nam
79d0: 65 3d 22 74 22 3e 54 68 65 20 53 51 4c 69 74 65 e="t">The SQLite
79e0: 54 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 3c Type to convert<
79f0: 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f /param>.. ///
7a00: 20 3c 72 65 74 75 72 6e 73 3e 52 65 74 75 72 6e <returns>Return
7a10: 73 20 61 20 2e 4e 45 54 20 54 79 70 65 20 6f 62 s a .NET Type ob
7a20: 6a 65 63 74 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a ject</returns>..
7a30: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 internal sta
7a40: 74 69 63 20 54 79 70 65 20 53 51 4c 69 74 65 54 tic Type SQLiteT
7a50: 79 70 65 54 6f 54 79 70 65 28 53 51 4c 69 74 65 ypeToType(SQLite
7a60: 54 79 70 65 20 74 29 0d 0a 20 20 20 20 7b 0d 0a Type t).. {..
7a70: 20 20 20 20 20 20 69 66 20 28 74 2e 54 79 70 65 if (t.Type
7a80: 20 3d 3d 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 == DbType.Objec
7a90: 74 29 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 t).. retu
7aa0: 72 6e 20 5f 61 66 66 69 6e 69 74 79 74 6f 74 79 rn _affinitytoty
7ab0: 70 65 5b 28 69 6e 74 29 74 2e 41 66 66 69 6e 69 pe[(int)t.Affini
7ac0: 74 79 5d 3b 0d 0a 20 20 20 20 20 20 65 6c 73 65 ty];.. else
7ad0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
7ae0: 20 53 51 4c 69 74 65 43 6f 6e 76 65 72 74 2e 44 SQLiteConvert.D
7af0: 62 54 79 70 65 54 6f 54 79 70 65 28 74 2e 54 79 bTypeToType(t.Ty
7b00: 70 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 pe);.. }....
7b10: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 private stati
7b20: 63 20 54 79 70 65 5b 5d 20 5f 61 66 66 69 6e 69 c Type[] _affini
7b30: 74 79 74 6f 74 79 70 65 20 3d 20 7b 0d 0a 20 20 tytotype = {..
7b40: 20 20 20 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 typeof(objec
7b50: 74 29 2c 20 20 20 2f 2f 20 55 6e 69 6e 69 74 69 t), // Uniniti
7b60: 61 6c 69 7a 65 64 20 28 30 29 0d 0a 20 20 20 20 alized (0)..
7b70: 20 20 74 79 70 65 6f 66 28 49 6e 74 36 34 29 2c typeof(Int64),
7b80: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 29 // Int64 (1)
7b90: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 44 .. typeof(D
7ba0: 6f 75 62 6c 65 29 2c 20 20 20 2f 2f 20 44 6f 75 ouble), // Dou
7bb0: 62 6c 65 20 28 32 29 0d 0a 20 20 20 20 20 20 74 ble (2).. t
7bc0: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c 20 20 ypeof(string),
7bd0: 20 2f 2f 20 54 65 78 74 20 28 33 29 0d 0a 20 20 // Text (3)..
7be0: 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 5b typeof(byte[
7bf0: 5d 29 2c 20 20 20 2f 2f 20 42 6c 6f 62 20 28 34 ]), // Blob (4
7c00: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 ).. typeof(
7c10: 6f 62 6a 65 63 74 29 2c 20 20 20 2f 2f 20 4e 75 object), // Nu
7c20: 6c 6c 20 28 35 29 0d 0a 20 20 20 20 20 20 74 79 ll (5).. ty
7c30: 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c 20 peof(DateTime),
7c40: 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 31 30 29 // DateTime (10)
7c50: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 6f .. typeof(o
7c60: 62 6a 65 63 74 29 20 20 20 20 2f 2f 20 4e 6f 6e bject) // Non
7c70: 65 20 28 31 31 29 0d 0a 20 20 20 20 7d 3b 0d 0a e (11).. };..
7c80: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
7c90: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 ry>.. /// For
7ca0: 20 61 20 67 69 76 65 6e 20 69 6e 74 72 69 6e 73 a given intrins
7cb0: 69 63 20 74 79 70 65 2c 20 72 65 74 75 72 6e 20 ic type, return
7cc0: 61 20 44 62 54 79 70 65 0d 0a 20 20 20 20 2f 2f a DbType.. //
7cd0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
7ce0: 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 6d /// <param nam
7cf0: 65 3d 22 74 79 70 22 3e 54 68 65 20 6e 61 74 69 e="typ">The nati
7d00: 76 65 20 74 79 70 65 20 74 6f 20 63 6f 6e 76 65 ve type to conve
7d10: 72 74 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 20 rt</param>..
7d20: 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 /// <returns>The
7d30: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 28 corresponding (
7d40: 63 6c 6f 73 65 73 74 20 6d 61 74 63 68 29 20 44 closest match) D
7d50: 62 54 79 70 65 3c 2f 72 65 74 75 72 6e 73 3e 0d bType</returns>.
7d60: 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 . internal st
7d70: 61 74 69 63 20 44 62 54 79 70 65 20 54 79 70 65 atic DbType Type
7d80: 54 6f 44 62 54 79 70 65 28 54 79 70 65 20 74 79 ToDbType(Type ty
7d90: 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 p).. {..
7da0: 20 54 79 70 65 43 6f 64 65 20 74 63 20 3d 20 54 TypeCode tc = T
7db0: 79 70 65 2e 47 65 74 54 79 70 65 43 6f 64 65 28 ype.GetTypeCode(
7dc0: 74 79 70 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 typ);.. if
7dd0: 28 74 63 20 3d 3d 20 54 79 70 65 43 6f 64 65 2e (tc == TypeCode.
7de0: 4f 62 6a 65 63 74 29 0d 0a 20 20 20 20 20 20 7b Object).. {
7df0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 79 .. if (ty
7e00: 70 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65 p == typeof(byte
7e10: 5b 5d 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 [])) return DbTy
7e20: 70 65 2e 42 69 6e 61 72 79 3b 0d 0a 20 20 20 20 pe.Binary;..
7e30: 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 74 if (typ == t
7e40: 79 70 65 6f 66 28 47 75 69 64 29 29 20 72 65 74 ypeof(Guid)) ret
7e50: 75 72 6e 20 44 62 54 79 70 65 2e 47 75 69 64 3b urn DbType.Guid;
7e60: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
7e70: 20 44 62 54 79 70 65 2e 53 74 72 69 6e 67 3b 0d DbType.String;.
7e80: 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 . }..
7e90: 72 65 74 75 72 6e 20 5f 74 79 70 65 74 6f 64 62 return _typetodb
7ea0: 74 79 70 65 5b 28 69 6e 74 29 74 63 5d 3b 0d 0a type[(int)tc];..
7eb0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 }.... pri
7ec0: 76 61 74 65 20 73 74 61 74 69 63 20 44 62 54 79 vate static DbTy
7ed0: 70 65 5b 5d 20 5f 74 79 70 65 74 6f 64 62 74 79 pe[] _typetodbty
7ee0: 70 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 44 62 pe = {.. Db
7ef0: 54 79 70 65 2e 4f 62 6a 65 63 74 2c 20 20 20 2f Type.Object, /
7f00: 2f 20 45 6d 70 74 79 20 28 30 29 0d 0a 20 20 20 / Empty (0)..
7f10: 20 20 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 DbType.Binary
7f20: 2c 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 , // Object (1
7f30: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e ).. DbType.
7f40: 4f 62 6a 65 63 74 2c 20 20 20 2f 2f 20 44 42 4e Object, // DBN
7f50: 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 20 20 44 ull (2).. D
7f60: 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 20 bType.Boolean,
7f70: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a // Boolean (3)..
7f80: 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 42 79 DbType.SBy
7f90: 74 65 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28 te, // Char (
7fa0: 34 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 4).. DbType
7fb0: 2e 53 42 79 74 65 2c 20 20 20 20 2f 2f 20 53 42 .SByte, // SB
7fc0: 79 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 44 yte (5).. D
7fd0: 62 54 79 70 65 2e 42 79 74 65 2c 20 20 20 20 20 bType.Byte,
7fe0: 2f 2f 20 42 79 74 65 20 28 36 29 0d 0a 20 20 20 // Byte (6)..
7ff0: 20 20 20 44 62 54 79 70 65 2e 49 6e 74 31 36 2c DbType.Int16,
8000: 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 29 // Int16 (7)
8010: 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 55 .. DbType.U
8020: 49 6e 74 31 36 2c 20 20 20 2f 2f 20 55 49 6e 74 Int16, // UInt
8030: 31 36 20 28 38 29 0d 0a 20 20 20 20 20 20 44 62 16 (8).. Db
8040: 54 79 70 65 2e 49 6e 74 33 32 2c 20 20 20 20 2f Type.Int32, /
8050: 2f 20 49 6e 74 33 32 20 28 39 29 0d 0a 20 20 20 / Int32 (9)..
8060: 20 20 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 DbType.UInt32
8070: 2c 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 31 , // UInt32 (1
8080: 30 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 0).. DbType
8090: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 6e .Int64, // In
80a0: 74 36 34 20 28 31 31 29 0d 0a 20 20 20 20 20 20 t64 (11)..
80b0: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 20 DbType.UInt64,
80c0: 20 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d // UInt64 (12).
80d0: 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e 53 69 . DbType.Si
80e0: 6e 67 6c 65 2c 20 20 20 2f 2f 20 53 69 6e 67 6c ngle, // Singl
80f0: 65 20 28 31 33 29 0d 0a 20 20 20 20 20 20 44 62 e (13).. Db
8100: 54 79 70 65 2e 44 6f 75 62 6c 65 2c 20 20 20 2f Type.Double, /
8110: 2f 20 44 6f 75 62 6c 65 20 28 31 34 29 0d 0a 20 / Double (14)..
8120: 20 20 20 20 20 44 62 54 79 70 65 2e 44 65 63 69 DbType.Deci
8130: 6d 61 6c 2c 20 20 2f 2f 20 44 65 63 69 6d 61 6c mal, // Decimal
8140: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 62 54 (15).. DbT
8150: 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 2f 2f ype.DateTime, //
8160: 20 44 61 74 65 54 69 6d 65 20 28 31 36 29 0d 0a DateTime (16)..
8170: 20 20 20 20 20 20 44 62 54 79 70 65 2e 4f 62 6a DbType.Obj
8180: 65 63 74 2c 20 20 20 2f 2f 20 3f 3f 20 28 31 37 ect, // ?? (17
8190: 29 0d 0a 20 20 20 20 20 20 44 62 54 79 70 65 2e ).. DbType.
81a0: 53 74 72 69 6e 67 20 20 20 20 2f 2f 20 53 74 72 String // Str
81b0: 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 20 7d 3b ing (18).. };
81c0: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d .... /// <sum
81d0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 52 mary>.. /// R
81e0: 65 74 75 72 6e 73 20 74 68 65 20 43 6f 6c 75 6d eturns the Colum
81f0: 6e 53 69 7a 65 20 66 6f 72 20 74 68 65 20 67 69 nSize for the gi
8200: 76 65 6e 20 44 62 54 79 70 65 0d 0a 20 20 20 20 ven DbType..
8210: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
8220: 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e /// <param n
8230: 61 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62 ame="typ">The Db
8240: 54 79 70 65 20 74 6f 20 67 65 74 20 74 68 65 20 Type to get the
8250: 73 69 7a 65 20 6f 66 3c 2f 70 61 72 61 6d 3e 0d size of</param>.
8260: 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e . /// <return
8270: 73 3e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 s></returns>..
8280: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 internal stati
8290: 63 20 69 6e 74 20 44 62 54 79 70 65 54 6f 43 6f c int DbTypeToCo
82a0: 6c 75 6d 6e 53 69 7a 65 28 44 62 54 79 70 65 20 lumnSize(DbType
82b0: 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 typ).. {..
82c0: 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 79 70 return _dbtyp
82d0: 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 5b 28 69 etocolumnsize[(i
82e0: 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d nt)typ];.. }.
82f0: 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20 73 ... private s
8300: 74 61 74 69 63 20 69 6e 74 5b 5d 20 5f 64 62 74 tatic int[] _dbt
8310: 79 70 65 74 6f 63 6f 6c 75 6d 6e 73 69 7a 65 20 ypetocolumnsize
8320: 3d 20 7b 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d = {.. int.M
8330: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 axValue, // Ansi
8340: 53 74 72 69 6e 67 20 28 30 29 0d 0a 20 20 20 20 String (0)..
8350: 20 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 int.MaxValue,
8360: 2f 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 // Binary (1)..
8370: 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20 20 1,
8380: 20 20 20 2f 2f 20 42 79 74 65 20 28 32 29 0d 0a // Byte (2)..
8390: 20 20 20 20 20 20 31 2c 20 20 20 20 20 20 20 20 1,
83a0: 20 20 20 20 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 // Boolean (
83b0: 33 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 3).. 8,
83c0: 20 20 20 20 20 20 20 20 2f 2f 20 43 75 72 72 65 // Curre
83d0: 6e 63 79 20 28 34 29 0d 0a 20 20 20 20 20 20 38 ncy (4).. 8
83e0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 , //
83f0: 44 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 Date (5)..
8400: 38 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 8, //
8410: 20 44 61 74 65 54 69 6d 65 20 28 36 29 0d 0a 20 DateTime (6)..
8420: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 8,
8430: 20 20 20 2f 2f 20 44 65 63 69 6d 61 6c 20 28 37 // Decimal (7
8440: 29 0d 0a 20 20 20 20 20 20 38 2c 20 20 20 20 20 ).. 8,
8450: 20 20 20 20 20 20 20 2f 2f 20 44 6f 75 62 6c 65 // Double
8460: 20 28 38 29 0d 0a 20 20 20 20 20 20 31 36 2c 20 (8).. 16,
8470: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 47 75 69 // Gui
8480: 64 20 28 39 29 0d 0a 20 20 20 20 20 20 32 2c 20 d (9).. 2,
8490: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e // In
84a0: 74 31 36 20 28 31 30 29 0d 0a 20 20 20 20 20 20 t16 (10)..
84b0: 34 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 4, //
84c0: 20 49 6e 74 33 32 20 28 31 31 29 0d 0a 20 20 20 Int32 (11)..
84d0: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 8,
84e0: 20 2f 2f 20 49 6e 74 36 34 20 28 31 32 29 0d 0a // Int64 (12)..
84f0: 20 20 20 20 20 20 69 6e 74 2e 4d 61 78 56 61 6c int.MaxVal
8500: 75 65 2c 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 ue, // Object (1
8510: 33 29 0d 0a 20 20 20 20 20 20 31 2c 20 20 20 20 3).. 1,
8520: 20 20 20 20 20 20 20 20 2f 2f 20 53 42 79 74 65 // SByte
8530: 20 28 31 34 29 0d 0a 20 20 20 20 20 20 34 2c 20 (14).. 4,
8540: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 53 69 // Si
8550: 6e 67 6c 65 20 28 31 35 29 0d 0a 20 20 20 20 20 ngle (15)..
8560: 20 69 6e 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f int.MaxValue, /
8570: 2f 20 53 74 72 69 6e 67 20 28 31 36 29 0d 0a 20 / String (16)..
8580: 20 20 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 8,
8590: 20 20 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d // Time (17).
85a0: 0a 20 20 20 20 20 20 32 2c 20 20 20 20 20 20 20 . 2,
85b0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 31 36 20 28 // UInt16 (
85c0: 31 38 29 0d 0a 20 20 20 20 20 20 34 2c 20 20 20 18).. 4,
85d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 // UInt
85e0: 33 32 20 28 31 39 29 0d 0a 20 20 20 20 20 20 38 32 (19).. 8
85f0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 , //
8600: 55 49 6e 74 36 34 20 28 32 30 29 0d 0a 20 20 20 UInt64 (20)..
8610: 20 20 20 38 2c 20 20 20 20 20 20 20 20 20 20 20 8,
8620: 20 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28 // VarNumeric (
8630: 32 31 29 0d 0a 20 20 20 20 20 20 69 6e 74 2e 4d 21).. int.M
8640: 61 78 56 61 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 axValue, // Ansi
8650: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 StringFixedLengt
8660: 68 20 28 32 32 29 0d 0a 20 20 20 20 20 20 69 6e h (22).. in
8670: 74 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 53 t.MaxValue, // S
8680: 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 tringFixedLength
8690: 20 28 32 33 29 0d 0a 20 20 20 20 20 20 69 6e 74 (23).. int
86a0: 2e 4d 61 78 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f .MaxValue, // ??
86b0: 20 28 32 34 29 0d 0a 20 20 20 20 20 20 69 6e 74 (24).. int
86c0: 2e 4d 61 78 56 61 6c 75 65 20 20 2f 2f 20 58 6d .MaxValue // Xm
86d0: 6c 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a l (25).. };..
86e0: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 .. internal s
86f0: 74 61 74 69 63 20 6f 62 6a 65 63 74 20 44 62 54 tatic object DbT
8700: 79 70 65 54 6f 4e 75 6d 65 72 69 63 50 72 65 63 ypeToNumericPrec
8710: 69 73 69 6f 6e 28 44 62 54 79 70 65 20 74 79 70 ision(DbType typ
8720: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
8730: 72 65 74 75 72 6e 20 5f 64 62 74 79 70 65 74 6f return _dbtypeto
8740: 6e 75 6d 65 72 69 63 70 72 65 63 69 73 69 6f 6e numericprecision
8750: 5b 28 69 6e 74 29 74 79 70 5d 3b 0d 0a 20 20 20 [(int)typ];..
8760: 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 69 76 61 74 }.... privat
8770: 65 20 73 74 61 74 69 63 20 6f 62 6a 65 63 74 5b e static object[
8780: 5d 20 5f 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 ] _dbtypetonumer
8790: 69 63 70 72 65 63 69 73 69 6f 6e 20 3d 20 7b 0d icprecision = {.
87a0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 . DBNull.Va
87b0: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 lue, // AnsiStri
87c0: 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 ng (0).. DB
87d0: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 Null.Value, // B
87e0: 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 inary (1)..
87f0: 20 33 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 3, /
8800: 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 / Byte (2)..
8810: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 DBNull.Value,
8820: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a // Boolean (3)..
8830: 20 20 20 20 20 20 31 39 2c 20 20 20 20 20 20 20 19,
8840: 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 // Currency
8850: 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c (4).. DBNul
8860: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 l.Value, // Date
8870: 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 (5).. DBNu
8880: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 ll.Value, // Dat
8890: 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 eTime (6)..
88a0: 20 35 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 53, /
88b0: 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 / Decimal (7)..
88c0: 20 20 20 20 20 35 33 2c 20 20 20 20 20 20 20 20 53,
88d0: 20 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 // Double (8)
88e0: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 .. DBNull.V
88f0: 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 alue, // Guid (9
8900: 29 0d 0a 20 20 20 20 20 20 35 2c 20 20 20 20 20 ).. 5,
8910: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 // Int16
8920: 28 31 30 29 0d 0a 20 20 20 20 20 20 31 30 2c 20 (10).. 10,
8930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 // Int
8940: 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 31 32 (11).. 1
8950: 39 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 9, //
8960: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 Int64 (12)..
8970: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 DBNull.Value,
8980: 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a // Object (13)..
8990: 20 20 20 20 20 20 33 2c 20 20 20 20 20 20 20 20 3,
89a0: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 // SByte (14
89b0: 29 0d 0a 20 20 20 20 20 20 32 34 2c 20 20 20 20 ).. 24,
89c0: 20 20 20 20 20 20 20 2f 2f 20 53 69 6e 67 6c 65 // Single
89d0: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e (15).. DBN
89e0: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 ull.Value, // St
89f0: 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 ring (16)..
8a00: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f DBNull.Value, /
8a10: 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 / Time (17)..
8a20: 20 20 20 35 2c 20 20 20 20 20 20 20 20 20 20 20 5,
8a30: 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d // UInt16 (18).
8a40: 0a 20 20 20 20 20 20 31 30 2c 20 20 20 20 20 20 . 10,
8a50: 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 // UInt32 (
8a60: 31 39 29 0d 0a 20 20 20 20 20 20 31 39 2c 20 20 19).. 19,
8a70: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 // UInt
8a80: 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 35 64 (20).. 5
8a90: 33 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 3, //
8aa0: 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d VarNumeric (21).
8ab0: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 . DBNull.Va
8ac0: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 lue, // AnsiStri
8ad0: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 ngFixedLength (2
8ae0: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2).. DBNull
8af0: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e .Value, // Strin
8b00: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 gFixedLength (23
8b10: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e ).. DBNull.
8b20: 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 Value, // ?? (24
8b30: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e ).. DBNull.
8b40: 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 Value // Xml (2
8b50: 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 5).. };....
8b60: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 internal stati
8b70: 63 20 6f 62 6a 65 63 74 20 44 62 54 79 70 65 54 c object DbTypeT
8b80: 6f 4e 75 6d 65 72 69 63 53 63 61 6c 65 28 44 62 oNumericScale(Db
8b90: 54 79 70 65 20 74 79 70 29 0d 0a 20 20 20 20 7b Type typ).. {
8ba0: 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f .. return _
8bb0: 64 62 74 79 70 65 74 6f 6e 75 6d 65 72 69 63 73 dbtypetonumerics
8bc0: 63 61 6c 65 5b 28 69 6e 74 29 74 79 70 5d 3b 0d cale[(int)typ];.
8bd0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 72 . }.... pr
8be0: 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a ivate static obj
8bf0: 65 63 74 5b 5d 20 5f 64 62 74 79 70 65 74 6f 6e ect[] _dbtypeton
8c00: 75 6d 65 72 69 63 73 63 61 6c 65 20 3d 20 7b 0d umericscale = {.
8c10: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 . DBNull.Va
8c20: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 lue, // AnsiStri
8c30: 6e 67 20 28 30 29 0d 0a 20 20 20 20 20 20 44 42 ng (0).. DB
8c40: 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 42 Null.Value, // B
8c50: 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 20 20 20 inary (1)..
8c60: 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 0, /
8c70: 2f 20 42 79 74 65 20 28 32 29 0d 0a 20 20 20 20 / Byte (2)..
8c80: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 DBNull.Value,
8c90: 2f 2f 20 42 6f 6f 6c 65 61 6e 20 28 33 29 0d 0a // Boolean (3)..
8ca0: 20 20 20 20 20 20 34 2c 20 20 20 20 20 20 20 20 4,
8cb0: 20 20 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 // Currency
8cc0: 28 34 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c (4).. DBNul
8cd0: 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 65 l.Value, // Date
8ce0: 20 28 35 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 (5).. DBNu
8cf0: 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 44 61 74 ll.Value, // Dat
8d00: 65 54 69 6d 65 20 28 36 29 0d 0a 20 20 20 20 20 eTime (6)..
8d10: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f DBNull.Value, /
8d20: 2f 20 44 65 63 69 6d 61 6c 20 28 37 29 0d 0a 20 / Decimal (7)..
8d30: 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 DBNull.Valu
8d40: 65 2c 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 e, // Double (8)
8d50: 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 .. DBNull.V
8d60: 61 6c 75 65 2c 20 2f 2f 20 47 75 69 64 20 28 39 alue, // Guid (9
8d70: 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 ).. 0,
8d80: 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 // Int16
8d90: 28 31 30 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 (10).. 0,
8da0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 6e 74 // Int
8db0: 33 32 20 28 31 31 29 0d 0a 20 20 20 20 20 20 30 32 (11).. 0
8dc0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 , //
8dd0: 49 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 Int64 (12)..
8de0: 20 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 DBNull.Value,
8df0: 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 29 0d 0a // Object (13)..
8e00: 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 20 0,
8e10: 20 20 20 20 2f 2f 20 53 42 79 74 65 20 28 31 34 // SByte (14
8e20: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e ).. DBNull.
8e30: 56 61 6c 75 65 2c 20 2f 2f 20 53 69 6e 67 6c 65 Value, // Single
8e40: 20 28 31 35 29 0d 0a 20 20 20 20 20 20 44 42 4e (15).. DBN
8e50: 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 ull.Value, // St
8e60: 72 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 ring (16)..
8e70: 20 44 42 4e 75 6c 6c 2e 56 61 6c 75 65 2c 20 2f DBNull.Value, /
8e80: 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a 20 20 20 / Time (17)..
8e90: 20 20 20 30 2c 20 20 20 20 20 20 20 20 20 20 20 0,
8ea0: 20 2f 2f 20 55 49 6e 74 31 36 20 28 31 38 29 0d // UInt16 (18).
8eb0: 0a 20 20 20 20 20 20 30 2c 20 20 20 20 20 20 20 . 0,
8ec0: 20 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 20 28 // UInt32 (
8ed0: 31 39 29 0d 0a 20 20 20 20 20 20 30 2c 20 20 20 19).. 0,
8ee0: 20 20 20 20 20 20 20 20 20 2f 2f 20 55 49 6e 74 // UInt
8ef0: 36 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 30 64 (20).. 0
8f00: 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 , //
8f10: 56 61 72 4e 75 6d 65 72 69 63 20 28 32 31 29 0d VarNumeric (21).
8f20: 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e 56 61 . DBNull.Va
8f30: 6c 75 65 2c 20 2f 2f 20 41 6e 73 69 53 74 72 69 lue, // AnsiStri
8f40: 6e 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 ngFixedLength (2
8f50: 32 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2).. DBNull
8f60: 2e 56 61 6c 75 65 2c 20 2f 2f 20 53 74 72 69 6e .Value, // Strin
8f70: 67 46 69 78 65 64 4c 65 6e 67 74 68 20 28 32 33 gFixedLength (23
8f80: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e ).. DBNull.
8f90: 56 61 6c 75 65 2c 20 2f 2f 20 3f 3f 20 28 32 34 Value, // ?? (24
8fa0: 29 0d 0a 20 20 20 20 20 20 44 42 4e 75 6c 6c 2e ).. DBNull.
8fb0: 56 61 6c 75 65 20 20 2f 2f 20 58 6d 6c 20 28 32 Value // Xml (2
8fc0: 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 5).. };....
8fd0: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
8fe0: 0a 20 20 20 20 2f 2f 2f 20 44 65 74 65 72 6d 69 . /// Determi
8ff0: 6e 65 73 20 74 68 65 20 74 79 70 65 20 6e 61 6d nes the type nam
9000: 65 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e 20 e for the given
9010: 64 61 74 61 62 61 73 65 20 76 61 6c 75 65 20 74 database value t
9020: 79 70 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f ype... /// </
9030: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f summary>.. //
9040: 2f 20 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 / <param name="t
9050: 79 70 22 3e 54 68 65 20 64 61 74 61 62 61 73 65 yp">The database
9060: 20 76 61 6c 75 65 20 74 79 70 65 2e 3c 2f 70 61 value type.</pa
9070: 72 61 6d 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 ram>.. /// <r
9080: 65 74 75 72 6e 73 3e 54 68 65 20 74 79 70 65 20 eturns>The type
9090: 6e 61 6d 65 20 6f 72 20 61 6e 20 65 6d 70 74 79 name or an empty
90a0: 20 73 74 72 69 6e 67 20 69 66 20 69 74 20 63 61 string if it ca
90b0: 6e 6e 6f 74 20 62 65 20 64 65 74 65 72 6d 69 6e nnot be determin
90c0: 65 64 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 ed.</returns>..
90d0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 internal stat
90e0: 69 63 20 73 74 72 69 6e 67 20 44 62 54 79 70 65 ic string DbType
90f0: 54 6f 54 79 70 65 4e 61 6d 65 28 44 62 54 79 70 ToTypeName(DbTyp
9100: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 e typ).. {..
9110: 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 5f 73 79 lock (_sy
9120: 6e 63 52 6f 6f 74 29 0d 0a 20 20 20 20 20 20 20 ncRoot)..
9130: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
9140: 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 20 3d if (_typeNames =
9150: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 = null)..
9160: 20 20 20 20 20 20 20 20 20 5f 74 79 70 65 4e 61 _typeNa
9170: 6d 65 73 20 3d 20 47 65 74 53 51 4c 69 74 65 44 mes = GetSQLiteD
9180: 62 54 79 70 65 4d 61 70 28 29 3b 0d 0a 0d 0a 20 bTypeMap();....
9190: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 SQLit
91a0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 20 76 eDbTypeMapping v
91b0: 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 alue;....
91c0: 20 20 20 20 20 69 66 20 28 5f 74 79 70 65 4e 61 if (_typeNa
91d0: 6d 65 73 2e 54 72 79 47 65 74 56 61 6c 75 65 28 mes.TryGetValue(
91e0: 74 79 70 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 typ, out value))
91f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
9200: 20 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 74 return value.t
9210: 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 ypeName;..
9220: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 }.... s
9230: 74 72 69 6e 67 20 64 65 66 61 75 6c 74 54 79 70 tring defaultTyp
9240: 65 4e 61 6d 65 20 3d 20 53 74 72 69 6e 67 2e 45 eName = String.E
9250: 6d 70 74 79 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 mpty;....#if !NE
9260: 54 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 T_COMPACT_20 &&
9270: 54 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 TRACE_WARNING..
9280: 20 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 Trace.Wri
9290: 74 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f teLine(String.Fo
92a0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 rmat(..
92b0: 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 CultureInfo.C
92c0: 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a urrentCulture,..
92d0: 20 20 20 20 20 20 20 20 20 20 20 20 22 57 41 52 "WAR
92e0: 4e 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 NING: Type mappi
92f0: 6e 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 ng failed, retur
9300: 6e 69 6e 67 20 64 65 66 61 75 6c 74 20 6e 61 6d ning default nam
9310: 65 20 5c 22 7b 30 7d 5c 22 20 66 6f 72 20 74 79 e \"{0}\" for ty
9320: 70 65 20 7b 31 7d 2e 22 2c 0d 0a 20 20 20 20 20 pe {1}.",..
9330: 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 54 79 defaultTy
9340: 70 65 4e 61 6d 65 2c 20 74 79 70 29 29 3b 0d 0a peName, typ));..
9350: 23 65 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 #endif....
9360: 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 return default
9370: 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 7d TypeName;.. }
9380: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d .... /// <sum
9390: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 mary>.. /// C
93a0: 6f 6e 76 65 72 74 20 61 20 44 62 54 79 70 65 20 onvert a DbType
93b0: 74 6f 20 61 20 54 79 70 65 0d 0a 20 20 20 20 2f to a Type.. /
93c0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
93d0: 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 6e 61 /// <param na
93e0: 6d 65 3d 22 74 79 70 22 3e 54 68 65 20 44 62 54 me="typ">The DbT
93f0: 79 70 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 66 ype to convert f
9400: 72 6f 6d 3c 2f 70 61 72 61 6d 3e 0d 0a 20 20 20 rom</param>..
9410: 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 /// <returns>Th
9420: 65 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 68 20 e closest-match
9430: 2e 4e 45 54 20 74 79 70 65 3c 2f 72 65 74 75 72 .NET type</retur
9440: 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 ns>.. interna
9450: 6c 20 73 74 61 74 69 63 20 54 79 70 65 20 44 62 l static Type Db
9460: 54 79 70 65 54 6f 54 79 70 65 28 44 62 54 79 70 TypeToType(DbTyp
9470: 65 20 74 79 70 29 0d 0a 20 20 20 20 7b 0d 0a 20 e typ).. {..
9480: 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 62 74 return _dbt
9490: 79 70 65 54 6f 54 79 70 65 5b 28 69 6e 74 29 74 ypeToType[(int)t
94a0: 79 70 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 yp];.. }....
94b0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 private stati
94c0: 63 20 54 79 70 65 5b 5d 20 5f 64 62 74 79 70 65 c Type[] _dbtype
94d0: 54 6f 54 79 70 65 20 3d 20 7b 0d 0a 20 20 20 20 ToType = {..
94e0: 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 typeof(string)
94f0: 2c 20 20 20 2f 2f 20 41 6e 73 69 53 74 72 69 6e , // AnsiStrin
9500: 67 20 28 30 29 0d 0a 20 20 20 20 20 20 74 79 70 g (0).. typ
9510: 65 6f 66 28 62 79 74 65 5b 5d 29 2c 20 20 20 2f eof(byte[]), /
9520: 2f 20 42 69 6e 61 72 79 20 28 31 29 0d 0a 20 20 / Binary (1)..
9530: 20 20 20 20 74 79 70 65 6f 66 28 62 79 74 65 29 typeof(byte)
9540: 2c 20 20 20 20 20 2f 2f 20 42 79 74 65 20 28 32 , // Byte (2
9550: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 ).. typeof(
9560: 62 6f 6f 6c 29 2c 20 20 20 20 20 2f 2f 20 42 6f bool), // Bo
9570: 6f 6c 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 olean (3)..
9580: 20 74 79 70 65 6f 66 28 64 65 63 69 6d 61 6c 29 typeof(decimal)
9590: 2c 20 20 2f 2f 20 43 75 72 72 65 6e 63 79 20 28 , // Currency (
95a0: 34 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 4).. typeof
95b0: 28 44 61 74 65 54 69 6d 65 29 2c 20 2f 2f 20 44 (DateTime), // D
95c0: 61 74 65 20 28 35 29 0d 0a 20 20 20 20 20 20 74 ate (5).. t
95d0: 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 2c ypeof(DateTime),
95e0: 20 2f 2f 20 44 61 74 65 54 69 6d 65 20 28 36 29 // DateTime (6)
95f0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 64 .. typeof(d
9600: 65 63 69 6d 61 6c 29 2c 20 20 2f 2f 20 44 65 63 ecimal), // Dec
9610: 69 6d 61 6c 20 28 37 29 0d 0a 20 20 20 20 20 20 imal (7)..
9620: 74 79 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 typeof(double),
9630: 20 20 2f 2f 20 44 6f 75 62 6c 65 20 28 38 29 0d // Double (8).
9640: 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 47 75 . typeof(Gu
9650: 69 64 29 2c 20 20 20 20 20 2f 2f 20 47 75 69 64 id), // Guid
9660: 20 28 39 29 0d 0a 20 20 20 20 20 20 74 79 70 65 (9).. type
9670: 6f 66 28 49 6e 74 31 36 29 2c 20 20 20 20 2f 2f of(Int16), //
9680: 20 49 6e 74 31 36 20 28 31 30 29 0d 0a 20 20 20 Int16 (10)..
9690: 20 20 20 74 79 70 65 6f 66 28 49 6e 74 33 32 29 typeof(Int32)
96a0: 2c 20 20 20 20 2f 2f 20 49 6e 74 33 32 20 28 31 , // Int32 (1
96b0: 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 1).. typeof
96c0: 28 49 6e 74 36 34 29 2c 20 20 20 20 2f 2f 20 49 (Int64), // I
96d0: 6e 74 36 34 20 28 31 32 29 0d 0a 20 20 20 20 20 nt64 (12)..
96e0: 20 74 79 70 65 6f 66 28 6f 62 6a 65 63 74 29 2c typeof(object),
96f0: 20 20 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 33 // Object (13
9700: 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 ).. typeof(
9710: 73 62 79 74 65 29 2c 20 20 20 20 2f 2f 20 53 42 sbyte), // SB
9720: 79 74 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 yte (14)..
9730: 74 79 70 65 6f 66 28 66 6c 6f 61 74 29 2c 20 20 typeof(float),
9740: 20 20 2f 2f 20 53 69 6e 67 6c 65 20 28 31 35 29 // Single (15)
9750: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 .. typeof(s
9760: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 53 74 72 tring), // Str
9770: 69 6e 67 20 28 31 36 29 0d 0a 20 20 20 20 20 20 ing (16)..
9780: 74 79 70 65 6f 66 28 44 61 74 65 54 69 6d 65 29 typeof(DateTime)
9790: 2c 20 2f 2f 20 54 69 6d 65 20 28 31 37 29 0d 0a , // Time (17)..
97a0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e typeof(UIn
97b0: 74 31 36 29 2c 20 20 20 2f 2f 20 55 49 6e 74 31 t16), // UInt1
97c0: 36 20 28 31 38 29 0d 0a 20 20 20 20 20 20 74 79 6 (18).. ty
97d0: 70 65 6f 66 28 55 49 6e 74 33 32 29 2c 20 20 20 peof(UInt32),
97e0: 2f 2f 20 55 49 6e 74 33 32 20 28 31 39 29 0d 0a // UInt32 (19)..
97f0: 20 20 20 20 20 20 74 79 70 65 6f 66 28 55 49 6e typeof(UIn
9800: 74 36 34 29 2c 20 20 20 2f 2f 20 55 49 6e 74 36 t64), // UInt6
9810: 34 20 28 32 30 29 0d 0a 20 20 20 20 20 20 74 79 4 (20).. ty
9820: 70 65 6f 66 28 64 6f 75 62 6c 65 29 2c 20 20 20 peof(double),
9830: 2f 2f 20 56 61 72 4e 75 6d 65 72 69 63 20 28 32 // VarNumeric (2
9840: 31 29 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 1).. typeof
9850: 28 73 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 41 (string), // A
9860: 6e 73 69 53 74 72 69 6e 67 46 69 78 65 64 4c 65 nsiStringFixedLe
9870: 6e 67 74 68 20 28 32 32 29 0d 0a 20 20 20 20 20 ngth (22)..
9880: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 2c typeof(string),
9890: 20 20 20 2f 2f 20 53 74 72 69 6e 67 46 69 78 65 // StringFixe
98a0: 64 4c 65 6e 67 74 68 20 28 32 33 29 0d 0a 20 20 dLength (23)..
98b0: 20 20 20 20 74 79 70 65 6f 66 28 73 74 72 69 6e typeof(strin
98c0: 67 29 2c 20 20 20 2f 2f 20 3f 3f 20 28 32 34 29 g), // ?? (24)
98d0: 0d 0a 20 20 20 20 20 20 74 79 70 65 6f 66 28 73 .. typeof(s
98e0: 74 72 69 6e 67 29 2c 20 20 20 2f 2f 20 58 6d 6c tring), // Xml
98f0: 20 28 32 35 29 0d 0a 20 20 20 20 7d 3b 0d 0a 0d (25).. };...
9900: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
9910: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 46 6f 72 20 y>.. /// For
9920: 61 20 67 69 76 65 6e 20 74 79 70 65 2c 20 72 65 a given type, re
9930: 74 75 72 6e 20 74 68 65 20 63 6c 6f 73 65 73 74 turn the closest
9940: 2d 6d 61 74 63 68 20 53 51 4c 69 74 65 20 54 79 -match SQLite Ty
9950: 70 65 41 66 66 69 6e 69 74 79 2c 20 77 68 69 63 peAffinity, whic
9960: 68 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61 6e h only understan
9970: 64 73 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 ds a very limite
9980: 64 20 73 75 62 73 65 74 20 6f 66 20 74 79 70 65 d subset of type
9990: 73 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 s... /// </su
99a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 mmary>.. ///
99b0: 3c 70 61 72 61 6d 20 6e 61 6d 65 3d 22 74 79 70 <param name="typ
99c0: 22 3e 54 68 65 20 74 79 70 65 20 74 6f 20 65 76 ">The type to ev
99d0: 61 6c 75 61 74 65 3c 2f 70 61 72 61 6d 3e 0d 0a aluate</param>..
99e0: 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 /// <returns
99f0: 3e 54 68 65 20 53 51 4c 69 74 65 20 74 79 70 65 >The SQLite type
9a00: 20 61 66 66 69 6e 69 74 79 20 66 6f 72 20 74 68 affinity for th
9a10: 61 74 20 74 79 70 65 2e 3c 2f 72 65 74 75 72 6e at type.</return
9a20: 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c s>.. internal
9a30: 20 73 74 61 74 69 63 20 54 79 70 65 41 66 66 69 static TypeAffi
9a40: 6e 69 74 79 20 54 79 70 65 54 6f 41 66 66 69 6e nity TypeToAffin
9a50: 69 74 79 28 54 79 70 65 20 74 79 70 29 0d 0a 20 ity(Type typ)..
9a60: 20 20 20 7b 0d 0a 20 20 20 20 20 20 54 79 70 65 {.. Type
9a70: 43 6f 64 65 20 74 63 20 3d 20 54 79 70 65 2e 47 Code tc = Type.G
9a80: 65 74 54 79 70 65 43 6f 64 65 28 74 79 70 29 3b etTypeCode(typ);
9a90: 0d 0a 20 20 20 20 20 20 69 66 20 28 74 63 20 3d .. if (tc =
9aa0: 3d 20 54 79 70 65 43 6f 64 65 2e 4f 62 6a 65 63 = TypeCode.Objec
9ab0: 74 29 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 t).. {..
9ac0: 20 20 20 20 20 69 66 20 28 74 79 70 20 3d 3d 20 if (typ ==
9ad0: 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 20 7c typeof(byte[]) |
9ae0: 7c 20 74 79 70 20 3d 3d 20 74 79 70 65 6f 66 28 | typ == typeof(
9af0: 47 75 69 64 29 29 0d 0a 20 20 20 20 20 20 20 20 Guid))..
9b00: 20 20 72 65 74 75 72 6e 20 54 79 70 65 41 66 66 return TypeAff
9b10: 69 6e 69 74 79 2e 42 6c 6f 62 3b 0d 0a 20 20 20 inity.Blob;..
9b20: 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 else..
9b30: 20 20 20 20 20 72 65 74 75 72 6e 20 54 79 70 65 return Type
9b40: 41 66 66 69 6e 69 74 79 2e 54 65 78 74 3b 0d 0a Affinity.Text;..
9b50: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 72 }.. r
9b60: 65 74 75 72 6e 20 5f 74 79 70 65 63 6f 64 65 41 eturn _typecodeA
9b70: 66 66 69 6e 69 74 69 65 73 5b 28 69 6e 74 29 74 ffinities[(int)t
9b80: 63 5d 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 c];.. }....
9b90: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 private static
9ba0: 20 54 79 70 65 41 66 66 69 6e 69 74 79 5b 5d 20 TypeAffinity[]
9bb0: 5f 74 79 70 65 63 6f 64 65 41 66 66 69 6e 69 74 _typecodeAffinit
9bc0: 69 65 73 20 3d 20 7b 0d 0a 20 20 20 20 20 20 54 ies = {.. T
9bd0: 79 70 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c ypeAffinity.Null
9be0: 2c 20 20 20 20 20 2f 2f 20 45 6d 70 74 79 20 28 , // Empty (
9bf0: 30 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 0).. TypeAf
9c00: 66 69 6e 69 74 79 2e 42 6c 6f 62 2c 20 20 20 20 finity.Blob,
9c10: 20 2f 2f 20 4f 62 6a 65 63 74 20 28 31 29 0d 0a // Object (1)..
9c20: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 TypeAffini
9c30: 74 79 2e 4e 75 6c 6c 2c 20 20 20 20 20 2f 2f 20 ty.Null, //
9c40: 44 42 4e 75 6c 6c 20 28 32 29 0d 0a 20 20 20 20 DBNull (2)..
9c50: 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 TypeAffinity.I
9c60: 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 6f 6f 6c nt64, // Bool
9c70: 65 61 6e 20 28 33 29 0d 0a 20 20 20 20 20 20 54 ean (3).. T
9c80: 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 ypeAffinity.Int6
9c90: 34 2c 20 20 20 20 2f 2f 20 43 68 61 72 20 28 34 4, // Char (4
9ca0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 ).. TypeAff
9cb0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 inity.Int64,
9cc0: 2f 2f 20 53 42 79 74 65 20 28 35 29 0d 0a 20 20 // SByte (5)..
9cd0: 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 TypeAffinity
9ce0: 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 42 79 .Int64, // By
9cf0: 74 65 20 28 36 29 0d 0a 20 20 20 20 20 20 54 79 te (6).. Ty
9d00: 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 peAffinity.Int64
9d10: 2c 20 20 20 20 2f 2f 20 49 6e 74 31 36 20 28 37 , // Int16 (7
9d20: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 ).. TypeAff
9d30: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 inity.Int64,
9d40: 2f 2f 20 55 49 6e 74 31 36 20 28 38 29 0d 0a 20 // UInt16 (8)..
9d50: 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 TypeAffinit
9d60: 79 2e 49 6e 74 36 34 2c 20 20 20 20 2f 2f 20 49 y.Int64, // I
9d70: 6e 74 33 32 20 28 39 29 0d 0a 20 20 20 20 20 20 nt32 (9)..
9d80: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 TypeAffinity.Int
9d90: 36 34 2c 20 20 20 20 2f 2f 20 55 49 6e 74 33 32 64, // UInt32
9da0: 20 28 31 30 29 0d 0a 20 20 20 20 20 20 54 79 70 (10).. Typ
9db0: 65 41 66 66 69 6e 69 74 79 2e 49 6e 74 36 34 2c eAffinity.Int64,
9dc0: 20 20 20 20 2f 2f 20 49 6e 74 36 34 20 28 31 31 // Int64 (11
9dd0: 29 0d 0a 20 20 20 20 20 20 54 79 70 65 41 66 66 ).. TypeAff
9de0: 69 6e 69 74 79 2e 49 6e 74 36 34 2c 20 20 20 20 inity.Int64,
9df0: 2f 2f 20 55 49 6e 74 36 34 20 28 31 32 29 0d 0a // UInt64 (12)..
9e00: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 TypeAffini
9e10: 74 79 2e 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 ty.Double, //
9e20: 53 69 6e 67 6c 65 20 28 31 33 29 0d 0a 20 20 20 Single (13)..
9e30: 20 20 20 54 79 70 65 41 66 66 69 6e 69 74 79 2e TypeAffinity.
9e40: 44 6f 75 62 6c 65 2c 20 20 20 2f 2f 20 44 6f 75 Double, // Dou
9e50: 62 6c 65 20 28 31 34 29 0d 0a 20 20 20 20 20 20 ble (14)..
9e60: 54 79 70 65 41 66 66 69 6e 69 74 79 2e 44 6f 75 TypeAffinity.Dou
9e70: 62 6c 65 2c 20 20 20 2f 2f 20 44 65 63 69 6d 61 ble, // Decima
9e80: 6c 20 28 31 35 29 0d 0a 20 20 20 20 20 20 54 79 l (15).. Ty
9e90: 70 65 41 66 66 69 6e 69 74 79 2e 44 61 74 65 54 peAffinity.DateT
9ea0: 69 6d 65 2c 20 2f 2f 20 44 61 74 65 54 69 6d 65 ime, // DateTime
9eb0: 20 28 31 36 29 0d 0a 20 20 20 20 20 20 54 79 70 (16).. Typ
9ec0: 65 41 66 66 69 6e 69 74 79 2e 4e 75 6c 6c 2c 20 eAffinity.Null,
9ed0: 20 20 20 20 2f 2f 20 3f 3f 20 28 31 37 29 0d 0a // ?? (17)..
9ee0: 20 20 20 20 20 20 54 79 70 65 41 66 66 69 6e 69 TypeAffini
9ef0: 74 79 2e 54 65 78 74 20 20 20 20 20 20 2f 2f 20 ty.Text //
9f00: 53 74 72 69 6e 67 20 28 31 38 29 0d 0a 20 20 20 String (18)..
9f10: 20 7d 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c };.... /// <
9f20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f summary>.. //
9f30: 2f 20 42 75 69 6c 64 73 20 61 6e 64 20 72 65 74 / Builds and ret
9f40: 75 72 6e 73 20 61 20 6d 61 70 20 63 6f 6e 74 61 urns a map conta
9f50: 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 ining the databa
9f60: 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 0d se column types.
9f70: 0a 20 20 20 20 2f 2f 2f 20 72 65 63 6f 67 6e 69 . /// recogni
9f80: 7a 65 64 20 62 79 20 74 68 69 73 20 70 72 6f 76 zed by this prov
9f90: 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c ider... /// <
9fa0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f /summary>.. /
9fb0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 0d 0a 20 20 // <returns>..
9fc0: 20 20 2f 2f 2f 20 41 20 6d 61 70 20 63 6f 6e 74 /// A map cont
9fd0: 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 aining the datab
9fe0: 61 73 65 20 63 6f 6c 75 6d 6e 20 74 79 70 65 73 ase column types
9ff0: 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 recognized by t
a000: 68 69 73 0d 0a 20 20 20 20 2f 2f 2f 20 70 72 6f his.. /// pro
a010: 76 69 64 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 vider... ///
a020: 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 </returns>..
a030: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 53 private static S
a040: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 20 47 QLiteDbTypeMap G
a050: 65 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 etSQLiteDbTypeMa
a060: 70 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 p().. {..
a070: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 return new S
a080: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 28 6e QLiteDbTypeMap(n
a090: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
a0a0: 61 70 70 69 6e 67 5b 5d 20 7b 0d 0a 20 20 20 20 apping[] {..
a0b0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
a0c0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
a0d0: 22 42 49 47 49 4e 54 22 2c 20 44 62 54 79 70 65 "BIGINT", DbType
a0e0: 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d .Int64, false),.
a0f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 . new
a100: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 SQLiteDbTypeMap
a110: 70 69 6e 67 28 22 42 49 47 55 49 4e 54 22 2c 20 ping("BIGUINT",
a120: 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c 20 66 DbType.UInt64, f
a130: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
a140: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
a150: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 49 4e TypeMapping("BIN
a160: 41 52 59 22 2c 20 44 62 54 79 70 65 2e 42 69 6e ARY", DbType.Bin
a170: 61 72 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 ary, false),..
a180: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 new SQ
a190: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e LiteDbTypeMappin
a1a0: 67 28 22 42 49 54 22 2c 20 44 62 54 79 70 65 2e g("BIT", DbType.
a1b0: 42 6f 6f 6c 65 61 6e 2c 20 74 72 75 65 29 2c 0d Boolean, true),.
a1c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 . new
a1d0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 SQLiteDbTypeMap
a1e0: 70 69 6e 67 28 22 42 4c 4f 42 22 2c 20 44 62 54 ping("BLOB", DbT
a1f0: 79 70 65 2e 42 69 6e 61 72 79 2c 20 74 72 75 65 ype.Binary, true
a200: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
a210: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
a220: 4d 61 70 70 69 6e 67 28 22 42 4f 4f 4c 22 2c 20 Mapping("BOOL",
a230: 44 62 54 79 70 65 2e 42 6f 6f 6c 65 61 6e 2c 20 DbType.Boolean,
a240: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 false),..
a250: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 new SQLiteD
a260: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 42 4f bTypeMapping("BO
a270: 4f 4c 45 41 4e 22 2c 20 44 62 54 79 70 65 2e 42 OLEAN", DbType.B
a280: 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 29 2c 0d oolean, false),.
a290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 . new
a2a0: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 SQLiteDbTypeMap
a2b0: 70 69 6e 67 28 22 43 48 41 52 22 2c 20 44 62 54 ping("CHAR", DbT
a2c0: 79 70 65 2e 41 6e 73 69 53 74 72 69 6e 67 46 69 ype.AnsiStringFi
a2d0: 78 65 64 4c 65 6e 67 74 68 2c 20 74 72 75 65 29 xedLength, true)
a2e0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ,.. n
a2f0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
a300: 61 70 70 69 6e 67 28 22 43 4f 55 4e 54 45 52 22 apping("COUNTER"
a310: 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 , DbType.Int64,
a320: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 false),..
a330: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 new SQLiteD
a340: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 43 55 bTypeMapping("CU
a350: 52 52 45 4e 43 59 22 2c 20 44 62 54 79 70 65 2e RRENCY", DbType.
a360: 44 65 63 69 6d 61 6c 2c 20 66 61 6c 73 65 29 2c Decimal, false),
a370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 .. ne
a380: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 w SQLiteDbTypeMa
a390: 70 70 69 6e 67 28 22 44 41 54 45 22 2c 20 44 62 pping("DATE", Db
a3a0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 Type.DateTime, f
a3b0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
a3c0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
a3d0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 41 54 TypeMapping("DAT
a3e0: 45 54 49 4d 45 22 2c 20 44 62 54 79 70 65 2e 44 ETIME", DbType.D
a3f0: 61 74 65 54 69 6d 65 2c 20 74 72 75 65 29 2c 0d ateTime, true),.
a400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 . new
a410: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 SQLiteDbTypeMap
a420: 70 69 6e 67 28 22 44 45 43 49 4d 41 4c 22 2c 20 ping("DECIMAL",
a430: 44 62 54 79 70 65 2e 44 65 63 69 6d 61 6c 2c 20 DbType.Decimal,
a440: 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 true),..
a450: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
a460: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 44 4f 55 TypeMapping("DOU
a470: 42 4c 45 22 2c 20 44 62 54 79 70 65 2e 44 6f 75 BLE", DbType.Dou
a480: 62 6c 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 ble, false),..
a490: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 new SQ
a4a0: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e LiteDbTypeMappin
a4b0: 67 28 22 46 4c 4f 41 54 22 2c 20 44 62 54 79 70 g("FLOAT", DbTyp
a4c0: 65 2e 44 6f 75 62 6c 65 2c 20 66 61 6c 73 65 29 e.Double, false)
a4d0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ,.. n
a4e0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
a4f0: 61 70 70 69 6e 67 28 22 47 45 4e 45 52 41 4c 22 apping("GENERAL"
a500: 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c , DbType.Binary,
a510: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 false),..
a520: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 new SQLite
a530: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 47 DbTypeMapping("G
a540: 55 49 44 22 2c 20 44 62 54 79 70 65 2e 47 75 69 UID", DbType.Gui
a550: 64 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 d, false),..
a560: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
a570: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
a580: 22 49 44 45 4e 54 49 54 59 22 2c 20 44 62 54 79 "IDENTITY", DbTy
a590: 70 65 2e 49 6e 74 36 34 2c 20 66 61 6c 73 65 29 pe.Int64, false)
a5a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ,.. n
a5b0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
a5c0: 61 70 70 69 6e 67 28 22 49 4d 41 47 45 22 2c 20 apping("IMAGE",
a5d0: 44 62 54 79 70 65 2e 42 69 6e 61 72 79 2c 20 66 DbType.Binary, f
a5e0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
a5f0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
a600: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 TypeMapping("INT
a610: 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 33 32 2c ", DbType.Int32,
a620: 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 20 true),..
a630: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 new SQLiteD
a640: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e bTypeMapping("IN
a650: 54 38 22 2c 20 44 62 54 79 70 65 2e 53 42 79 74 T8", DbType.SByt
a660: 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 e, false),..
a670: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
a680: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
a690: 22 49 4e 54 31 36 22 2c 20 44 62 54 79 70 65 2e "INT16", DbType.
a6a0: 49 6e 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a Int16, false),..
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 new
a6c0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 SQLiteDbTypeMapp
a6d0: 69 6e 67 28 22 49 4e 54 33 32 22 2c 20 44 62 54 ing("INT32", DbT
a6e0: 79 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 ype.Int32, false
a6f0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
a700: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
a710: 4d 61 70 70 69 6e 67 28 22 49 4e 54 36 34 22 2c Mapping("INT64",
a720: 20 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 DbType.Int64, f
a730: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
a740: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
a750: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 49 4e 54 TypeMapping("INT
a760: 45 47 45 52 22 2c 20 44 62 54 79 70 65 2e 49 6e EGER", DbType.In
a770: 74 36 34 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 t64, true),..
a780: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c new SQL
a790: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 iteDbTypeMapping
a7a0: 28 22 49 4e 54 45 47 45 52 38 22 2c 20 44 62 54 ("INTEGER8", DbT
a7b0: 79 70 65 2e 53 42 79 74 65 2c 20 66 61 6c 73 65 ype.SByte, false
a7c0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
a7d0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
a7e0: 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 Mapping("INTEGER
a7f0: 31 36 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 31 16", DbType.Int1
a800: 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 6, false),..
a810: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
a820: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
a830: 22 49 4e 54 45 47 45 52 33 32 22 2c 20 44 62 54 "INTEGER32", DbT
a840: 79 70 65 2e 49 6e 74 33 32 2c 20 66 61 6c 73 65 ype.Int32, false
a850: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
a860: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
a870: 4d 61 70 70 69 6e 67 28 22 49 4e 54 45 47 45 52 Mapping("INTEGER
a880: 36 34 22 2c 20 44 62 54 79 70 65 2e 49 6e 74 36 64", DbType.Int6
a890: 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 4, false),..
a8a0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
a8b0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
a8c0: 22 4c 4f 47 49 43 41 4c 22 2c 20 44 62 54 79 70 "LOGICAL", DbTyp
a8d0: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 e.Boolean, false
a8e0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
a8f0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
a900: 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 22 2c 20 Mapping("LONG",
a910: 44 62 54 79 70 65 2e 49 6e 74 36 34 2c 20 66 61 DbType.Int64, fa
a920: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 lse),..
a930: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 new SQLiteDbT
a940: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 ypeMapping("LONG
a950: 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e 53 74 CHAR", DbType.St
a960: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 ring, false),..
a970: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 new S
a980: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 QLiteDbTypeMappi
a990: 6e 67 28 22 4c 4f 4e 47 54 45 58 54 22 2c 20 44 ng("LONGTEXT", D
a9a0: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 bType.String, fa
a9b0: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 lse),..
a9c0: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 new SQLiteDbT
a9d0: 79 70 65 4d 61 70 70 69 6e 67 28 22 4c 4f 4e 47 ypeMapping("LONG
a9e0: 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 70 65 VARCHAR", DbType
a9f0: 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c .String, false),
aa00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 .. ne
aa10: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 w SQLiteDbTypeMa
aa20: 70 70 69 6e 67 28 22 4d 45 4d 4f 22 2c 20 44 62 pping("MEMO", Db
aa30: 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c Type.String, fal
aa40: 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 se),..
aa50: 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 new SQLiteDbTy
aa60: 70 65 4d 61 70 70 69 6e 67 28 22 4d 4f 4e 45 59 peMapping("MONEY
aa70: 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 ", DbType.Decima
aa80: 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 l, false),..
aa90: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
aaa0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
aab0: 22 4e 43 48 41 52 22 2c 20 44 62 54 79 70 65 2e "NCHAR", DbType.
aac0: 53 74 72 69 6e 67 46 69 78 65 64 4c 65 6e 67 74 StringFixedLengt
aad0: 68 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 h, true),..
aae0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 new SQLit
aaf0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 eDbTypeMapping("
ab00: 4e 4f 54 45 22 2c 20 44 62 54 79 70 65 2e 53 74 NOTE", DbType.St
ab10: 72 69 6e 67 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 ring, false),..
ab20: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 new S
ab30: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 QLiteDbTypeMappi
ab40: 6e 67 28 22 4e 54 45 58 54 22 2c 20 44 62 54 79 ng("NTEXT", DbTy
ab50: 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 pe.String, false
ab60: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
ab70: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
ab80: 4d 61 70 70 69 6e 67 28 22 4e 55 4d 45 52 49 43 Mapping("NUMERIC
ab90: 22 2c 20 44 62 54 79 70 65 2e 44 65 63 69 6d 61 ", DbType.Decima
aba0: 6c 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 l, false),..
abb0: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
abc0: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
abd0: 22 4e 56 41 52 43 48 41 52 22 2c 20 44 62 54 79 "NVARCHAR", DbTy
abe0: 70 65 2e 53 74 72 69 6e 67 2c 20 74 72 75 65 29 pe.String, true)
abf0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ,.. n
ac00: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
ac10: 61 70 70 69 6e 67 28 22 4f 4c 45 4f 42 4a 45 43 apping("OLEOBJEC
ac20: 54 22 2c 20 44 62 54 79 70 65 2e 42 69 6e 61 72 T", DbType.Binar
ac30: 79 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 y, false),..
ac40: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
ac50: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
ac60: 22 52 45 41 4c 22 2c 20 44 62 54 79 70 65 2e 44 "REAL", DbType.D
ac70: 6f 75 62 6c 65 2c 20 74 72 75 65 29 2c 0d 0a 20 ouble, true),..
ac80: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 new S
ac90: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 QLiteDbTypeMappi
aca0: 6e 67 28 22 53 49 4e 47 4c 45 22 2c 20 44 62 54 ng("SINGLE", DbT
acb0: 79 70 65 2e 53 69 6e 67 6c 65 2c 20 74 72 75 65 ype.Single, true
acc0: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
acd0: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
ace0: 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 44 41 Mapping("SMALLDA
acf0: 54 45 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 TE", DbType.Date
ad00: 54 69 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 Time, false),..
ad10: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 new S
ad20: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 QLiteDbTypeMappi
ad30: 6e 67 28 22 53 4d 41 4c 4c 49 4e 54 22 2c 20 44 ng("SMALLINT", D
ad40: 62 54 79 70 65 2e 49 6e 74 31 36 2c 20 74 72 75 bType.Int16, tru
ad50: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e),..
ad60: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 new SQLiteDbTyp
ad70: 65 4d 61 70 70 69 6e 67 28 22 53 4d 41 4c 4c 55 eMapping("SMALLU
ad80: 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 55 49 6e INT", DbType.UIn
ad90: 74 31 36 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 t16, true),..
ada0: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c new SQL
adb0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 iteDbTypeMapping
adc0: 28 22 53 54 52 49 4e 47 22 2c 20 44 62 54 79 70 ("STRING", DbTyp
add0: 65 2e 53 74 72 69 6e 67 2c 20 66 61 6c 73 65 29 e.String, false)
ade0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e ,.. n
adf0: 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ew SQLiteDbTypeM
ae00: 61 70 70 69 6e 67 28 22 54 45 58 54 22 2c 20 44 apping("TEXT", D
ae10: 62 54 79 70 65 2e 53 74 72 69 6e 67 2c 20 66 61 bType.String, fa
ae20: 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 lse),..
ae30: 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 new SQLiteDbT
ae40: 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4d 45 ypeMapping("TIME
ae50: 22 2c 20 44 62 54 79 70 65 2e 44 61 74 65 54 69 ", DbType.DateTi
ae60: 6d 65 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 me, false),..
ae70: 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c new SQL
ae80: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 iteDbTypeMapping
ae90: 28 22 54 49 4d 45 53 54 41 4d 50 22 2c 20 44 62 ("TIMESTAMP", Db
aea0: 54 79 70 65 2e 44 61 74 65 54 69 6d 65 2c 20 66 Type.DateTime, f
aeb0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
aec0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
aed0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 54 49 4e TypeMapping("TIN
aee0: 59 49 4e 54 22 2c 20 44 62 54 79 70 65 2e 42 79 YINT", DbType.By
aef0: 74 65 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 te, true),..
af00: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
af10: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
af20: 22 54 49 4e 59 53 49 4e 54 22 2c 20 44 62 54 79 "TINYSINT", DbTy
af30: 70 65 2e 53 42 79 74 65 2c 20 74 72 75 65 29 2c pe.SByte, true),
af40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 .. ne
af50: 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 w SQLiteDbTypeMa
af60: 70 70 69 6e 67 28 22 55 49 4e 54 22 2c 20 44 62 pping("UINT", Db
af70: 54 79 70 65 2e 55 49 6e 74 33 32 2c 20 74 72 75 Type.UInt32, tru
af80: 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 e),..
af90: 20 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 new SQLiteDbTyp
afa0: 65 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 38 22 eMapping("UINT8"
afb0: 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20 66 , DbType.Byte, f
afc0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
afd0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
afe0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 49 4e TypeMapping("UIN
aff0: 54 31 36 22 2c 20 44 62 54 79 70 65 2e 55 49 6e T16", DbType.UIn
b000: 74 31 36 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 t16, false),..
b010: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 new SQ
b020: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e LiteDbTypeMappin
b030: 67 28 22 55 49 4e 54 33 32 22 2c 20 44 62 54 79 g("UINT32", DbTy
b040: 70 65 2e 55 49 6e 74 33 32 2c 20 66 61 6c 73 65 pe.UInt32, false
b050: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
b060: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
b070: 4d 61 70 70 69 6e 67 28 22 55 49 4e 54 36 34 22 Mapping("UINT64"
b080: 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 2c , DbType.UInt64,
b090: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 false),..
b0a0: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 new SQLite
b0b0: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 DbTypeMapping("U
b0c0: 4c 4f 4e 47 22 2c 20 44 62 54 79 70 65 2e 55 49 LONG", DbType.UI
b0d0: 6e 74 36 34 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 nt64, false),..
b0e0: 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 new S
b0f0: 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 QLiteDbTypeMappi
b100: 6e 67 28 22 55 4e 49 51 55 45 49 44 45 4e 54 49 ng("UNIQUEIDENTI
b110: 46 49 45 52 22 2c 20 44 62 54 79 70 65 2e 47 75 FIER", DbType.Gu
b120: 69 64 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 id, true),..
b130: 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 new SQLi
b140: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 teDbTypeMapping(
b150: 22 55 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 "UNSIGNEDINTEGER
b160: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 ", DbType.UInt64
b170: 2c 20 74 72 75 65 29 2c 0d 0a 20 20 20 20 20 20 , true),..
b180: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 new SQLite
b190: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 DbTypeMapping("U
b1a0: 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 38 22 NSIGNEDINTEGER8"
b1b0: 2c 20 44 62 54 79 70 65 2e 42 79 74 65 2c 20 66 , DbType.Byte, f
b1c0: 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 alse),..
b1d0: 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 62 new SQLiteDb
b1e0: 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e 53 TypeMapping("UNS
b1f0: 49 47 4e 45 44 49 4e 54 45 47 45 52 31 36 22 2c IGNEDINTEGER16",
b200: 20 44 62 54 79 70 65 2e 55 49 6e 74 31 36 2c 20 DbType.UInt16,
b210: 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 20 false),..
b220: 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 44 new SQLiteD
b230: 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 4e bTypeMapping("UN
b240: 53 49 47 4e 45 44 49 4e 54 45 47 45 52 33 32 22 SIGNEDINTEGER32"
b250: 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 33 32 2c , DbType.UInt32,
b260: 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 20 false),..
b270: 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 65 new SQLite
b280: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 55 DbTypeMapping("U
b290: 4e 53 49 47 4e 45 44 49 4e 54 45 47 45 52 36 34 NSIGNEDINTEGER64
b2a0: 22 2c 20 44 62 54 79 70 65 2e 55 49 6e 74 36 34 ", DbType.UInt64
b2b0: 2c 20 66 61 6c 73 65 29 2c 0d 0a 20 20 20 20 20 , false),..
b2c0: 20 20 20 20 20 20 20 6e 65 77 20 53 51 4c 69 74 new SQLit
b2d0: 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 22 eDbTypeMapping("
b2e0: 56 41 52 42 49 4e 41 52 59 22 2c 20 44 62 54 79 VARBINARY", DbTy
b2f0: 70 65 2e 42 69 6e 61 72 79 2c 20 66 61 6c 73 65 pe.Binary, false
b300: 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ),..
b310: 6e 65 77 20 53 51 4c 69 74 65 44 62 54 79 70 65 new SQLiteDbType
b320: 4d 61 70 70 69 6e 67 28 22 56 41 52 43 48 41 52 Mapping("VARCHAR
b330: 22 2c 20 44 62 54 79 70 65 2e 41 6e 73 69 53 74 ", DbType.AnsiSt
b340: 72 69 6e 67 2c 20 74 72 75 65 29 2c 0d 0a 20 20 ring, true),..
b350: 20 20 20 20 20 20 20 20 20 20 6e 65 77 20 53 51 new SQ
b360: 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e LiteDbTypeMappin
b370: 67 28 22 59 45 53 4e 4f 22 2c 20 44 62 54 79 70 g("YESNO", DbTyp
b380: 65 2e 42 6f 6f 6c 65 61 6e 2c 20 66 61 6c 73 65 e.Boolean, false
b390: 29 0d 0a 20 20 20 20 20 20 20 20 7d 29 3b 0d 0a ).. });..
b3a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f }.... ///
b3b0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
b3c0: 2f 2f 2f 20 46 6f 72 20 61 20 67 69 76 65 6e 20 /// For a given
b3d0: 74 79 70 65 20 6e 61 6d 65 2c 20 72 65 74 75 72 type name, retur
b3e0: 6e 20 61 20 63 6c 6f 73 65 73 74 2d 6d 61 74 63 n a closest-matc
b3f0: 68 20 2e 4e 45 54 20 74 79 70 65 0d 0a 20 20 20 h .NET type..
b400: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d /// </summary>.
b410: 0a 20 20 20 20 2f 2f 2f 20 3c 70 61 72 61 6d 20 . /// <param
b420: 6e 61 6d 65 3d 22 4e 61 6d 65 22 3e 54 68 65 20 name="Name">The
b430: 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 79 70 65 name of the type
b440: 20 74 6f 20 6d 61 74 63 68 3c 2f 70 61 72 61 6d to match</param
b450: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 >.. /// <retu
b460: 72 6e 73 3e 54 68 65 20 2e 4e 45 54 20 44 42 54 rns>The .NET DBT
b470: 79 70 65 20 74 68 65 20 74 65 78 74 20 65 76 61 ype the text eva
b480: 6c 75 61 74 65 73 20 74 6f 2e 3c 2f 72 65 74 75 luates to.</retu
b490: 72 6e 73 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e rns>.. intern
b4a0: 61 6c 20 73 74 61 74 69 63 20 44 62 54 79 70 65 al static DbType
b4b0: 20 54 79 70 65 4e 61 6d 65 54 6f 44 62 54 79 70 TypeNameToDbTyp
b4c0: 65 28 73 74 72 69 6e 67 20 4e 61 6d 65 29 0d 0a e(string Name)..
b4d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 6c {.. l
b4e0: 6f 63 6b 20 28 5f 73 79 6e 63 52 6f 6f 74 29 0d ock (_syncRoot).
b4f0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 . {..
b500: 20 20 20 20 20 20 20 20 69 66 20 28 5f 74 79 70 if (_typ
b510: 65 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 0d eNames == null).
b520: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
b530: 20 5f 74 79 70 65 4e 61 6d 65 73 20 3d 20 47 65 _typeNames = Ge
b540: 74 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 tSQLiteDbTypeMap
b550: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 ();....
b560: 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 if (String.Is
b570: 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 4e 61 6d 65 NullOrEmpty(Name
b580: 29 29 20 72 65 74 75 72 6e 20 44 62 54 79 70 65 )) return DbType
b590: 2e 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 20 20 20 20 .Object;....
b5a0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 62 SQLiteDb
b5b0: 54 79 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 TypeMapping valu
b5c0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 e;....
b5d0: 20 20 69 66 20 28 5f 74 79 70 65 4e 61 6d 65 73 if (_typeNames
b5e0: 2e 54 72 79 47 65 74 56 61 6c 75 65 28 4e 61 6d .TryGetValue(Nam
b5f0: 65 2c 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a e, out value))..
b600: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 {..
b610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r
b620: 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 61 eturn value.data
b630: 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 Type;..
b640: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
b650: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 else..
b660: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 {..
b670: 20 20 20 20 20 20 20 69 6e 74 20 69 6e 64 65 78 int index
b680: 20 3d 20 4e 61 6d 65 2e 49 6e 64 65 78 4f 66 28 = Name.IndexOf(
b690: 27 28 27 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 '(');....
b6a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 69 6e if ((in
b6b0: 64 65 78 20 3e 20 30 29 20 26 26 0d 0a 20 20 20 dex > 0) &&..
b6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b6d0: 20 5f 74 79 70 65 4e 61 6d 65 73 2e 54 72 79 47 _typeNames.TryG
b6e0: 65 74 56 61 6c 75 65 28 4e 61 6d 65 2e 53 75 62 etValue(Name.Sub
b6f0: 73 74 72 69 6e 67 28 30 2c 20 69 6e 64 65 78 29 string(0, index)
b700: 2e 54 72 69 6d 45 6e 64 28 29 2c 20 6f 75 74 20 .TrimEnd(), out
b710: 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20 value))..
b720: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 {..
b730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b740: 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 64 61 74 return value.dat
b750: 61 54 79 70 65 3b 0d 0a 20 20 20 20 20 20 20 20 aType;..
b760: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
b770: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 }..
b780: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 44 }.... D
b790: 62 54 79 70 65 20 64 65 66 61 75 6c 74 44 62 54 bType defaultDbT
b7a0: 79 70 65 20 3d 20 44 62 54 79 70 65 2e 4f 62 6a ype = DbType.Obj
b7b0: 65 63 74 3b 0d 0a 0d 0a 23 69 66 20 21 4e 45 54 ect;....#if !NET
b7c0: 5f 43 4f 4d 50 41 43 54 5f 32 30 20 26 26 20 54 _COMPACT_20 && T
b7d0: 52 41 43 45 5f 57 41 52 4e 49 4e 47 0d 0a 20 20 RACE_WARNING..
b7e0: 20 20 20 20 20 20 54 72 61 63 65 2e 57 72 69 74 Trace.Writ
b7f0: 65 4c 69 6e 65 28 53 74 72 69 6e 67 2e 46 6f 72 eLine(String.For
b800: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 mat(..
b810: 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 CultureInfo.Cu
b820: 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 rrentCulture,..
b830: 20 20 20 20 20 20 20 20 20 20 20 22 57 41 52 4e "WARN
b840: 49 4e 47 3a 20 54 79 70 65 20 6d 61 70 70 69 6e ING: Type mappin
b850: 67 20 66 61 69 6c 65 64 2c 20 72 65 74 75 72 6e g failed, return
b860: 69 6e 67 20 64 65 66 61 75 6c 74 20 74 79 70 65 ing default type
b870: 20 7b 30 7d 20 66 6f 72 20 6e 61 6d 65 20 5c 22 {0} for name \"
b880: 7b 31 7d 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 {1}\".",..
b890: 20 20 20 20 20 20 64 65 66 61 75 6c 74 44 62 54 defaultDbT
b8a0: 79 70 65 2c 20 4e 61 6d 65 29 29 3b 0d 0a 23 65 ype, Name));..#e
b8b0: 6e 64 69 66 0d 0a 0d 0a 20 20 20 20 20 20 20 20 ndif....
b8c0: 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 44 62 return defaultDb
b8d0: 54 79 70 65 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 Type;.. }..
b8e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a #endregion....
b8f0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 private stat
b900: 69 63 20 6f 62 6a 65 63 74 20 5f 73 79 6e 63 52 ic object _syncR
b910: 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 oot = new object
b920: 28 29 3b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 ();.. private
b930: 20 73 74 61 74 69 63 20 53 51 4c 69 74 65 44 62 static SQLiteDb
b940: 54 79 70 65 4d 61 70 20 5f 74 79 70 65 4e 61 6d TypeMap _typeNam
b950: 65 73 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 7d 0d es = null;.. }.
b960: 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 ... /// <summar
b970: 79 3e 0d 0a 20 20 2f 2f 2f 20 53 51 4c 69 74 65 y>.. /// SQLite
b980: 20 68 61 73 20 76 65 72 79 20 6c 69 6d 69 74 65 has very limite
b990: 64 20 74 79 70 65 73 2c 20 61 6e 64 20 69 73 20 d types, and is
b9a0: 69 6e 68 65 72 65 6e 74 6c 79 20 74 65 78 74 2d inherently text-
b9b0: 62 61 73 65 64 2e 20 20 54 68 65 20 66 69 72 73 based. The firs
b9c0: 74 20 35 20 74 79 70 65 73 20 62 65 6c 6f 77 20 t 5 types below
b9d0: 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 73 75 represent the su
b9e0: 6d 20 6f 66 20 61 6c 6c 20 74 79 70 65 73 20 53 m of all types S
b9f0: 51 4c 69 74 65 0d 0a 20 20 2f 2f 2f 20 75 6e 64 QLite.. /// und
ba00: 65 72 73 74 61 6e 64 73 2e 20 20 54 68 65 20 44 erstands. The D
ba10: 61 74 65 54 69 6d 65 20 65 78 74 65 6e 73 69 6f ateTime extensio
ba20: 6e 20 74 6f 20 74 68 65 20 73 70 65 63 20 69 73 n to the spec is
ba30: 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 for internal us
ba40: 65 20 6f 6e 6c 79 2e 0d 0a 20 20 2f 2f 2f 20 3c e only... /// <
ba50: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 62 /summary>.. pub
ba60: 6c 69 63 20 65 6e 75 6d 20 54 79 70 65 41 66 66 lic enum TypeAff
ba70: 69 6e 69 74 79 0d 0a 20 20 7b 0d 0a 20 20 20 20 inity.. {..
ba80: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
ba90: 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 64 0d /// Not used.
baa0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
bab0: 72 79 3e 0d 0a 20 20 20 20 55 6e 69 6e 69 74 69 ry>.. Uniniti
bac0: 61 6c 69 7a 65 64 20 3d 20 30 2c 0d 0a 20 20 20 alized = 0,..
bad0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a /// <summary>..
bae0: 20 20 20 20 2f 2f 2f 20 41 6c 6c 20 69 6e 74 65 /// All inte
baf0: 67 65 72 73 20 69 6e 20 53 51 4c 69 74 65 20 64 gers in SQLite d
bb00: 65 66 61 75 6c 74 20 74 6f 20 49 6e 74 36 34 0d efault to Int64.
bb10: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
bb20: 72 79 3e 0d 0a 20 20 20 20 49 6e 74 36 34 20 3d ry>.. Int64 =
bb30: 20 31 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 1,.. /// <su
bb40: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 mmary>.. ///
bb50: 41 6c 6c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 All floating poi
bb60: 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e 20 53 51 nt numbers in SQ
bb70: 4c 69 74 65 20 64 65 66 61 75 6c 74 20 74 6f 20 Lite default to
bb80: 64 6f 75 62 6c 65 0d 0a 20 20 20 20 2f 2f 2f 20 double.. ///
bb90: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 </summary>..
bba0: 44 6f 75 62 6c 65 20 3d 20 32 2c 0d 0a 20 20 20 Double = 2,..
bbb0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a /// <summary>..
bbc0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 /// The defa
bbd0: 75 6c 74 20 64 61 74 61 20 74 79 70 65 20 6f 66 ult data type of
bbe0: 20 53 51 4c 69 74 65 20 69 73 20 74 65 78 74 0d SQLite is text.
bbf0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
bc00: 72 79 3e 0d 0a 20 20 20 20 54 65 78 74 20 3d 20 ry>.. Text =
bc10: 33 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 3,.. /// <sum
bc20: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 mary>.. /// T
bc30: 79 70 69 63 61 6c 6c 79 20 62 6c 6f 62 20 74 79 ypically blob ty
bc40: 70 65 73 20 61 72 65 20 6f 6e 6c 79 20 73 65 65 pes are only see
bc50: 6e 20 77 68 65 6e 20 72 65 74 75 72 6e 65 64 20 n when returned
bc60: 66 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 0d from a function.
bc70: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
bc80: 72 79 3e 0d 0a 20 20 20 20 42 6c 6f 62 20 3d 20 ry>.. Blob =
bc90: 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 4,.. /// <sum
bca0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 4e mary>.. /// N
bcb0: 75 6c 6c 20 74 79 70 65 73 20 63 61 6e 20 62 65 ull types can be
bcc0: 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 66 returned from f
bcd0: 75 6e 63 74 69 6f 6e 73 0d 0a 20 20 20 20 2f 2f unctions.. //
bce0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
bcf0: 20 20 4e 75 6c 6c 20 3d 20 35 2c 0d 0a 20 20 20 Null = 5,..
bd00: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a /// <summary>..
bd10: 20 20 20 20 2f 2f 2f 20 55 73 65 64 20 69 6e 74 /// Used int
bd20: 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 69 73 20 ernally by this
bd30: 70 72 6f 76 69 64 65 72 0d 0a 20 20 20 20 2f 2f provider.. //
bd40: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
bd50: 20 20 44 61 74 65 54 69 6d 65 20 3d 20 31 30 2c DateTime = 10,
bd60: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .. /// <summa
bd70: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 55 73 65 ry>.. /// Use
bd80: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 d internally by
bd90: 74 68 69 73 20 70 72 6f 76 69 64 65 72 0d 0a 20 this provider..
bda0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
bdb0: 3e 0d 0a 20 20 20 20 4e 6f 6e 65 20 3d 20 31 31 >.. None = 11
bdc0: 2c 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 ,.. }.... ///
bdd0: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f <summary>.. ///
bde0: 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 65 These are the e
bdf0: 76 65 6e 74 20 74 79 70 65 73 20 61 73 73 6f 63 vent types assoc
be00: 69 61 74 65 64 20 77 69 74 68 20 74 68 65 0d 0a iated with the..
be10: 20 20 2f 2f 2f 20 3c 73 65 65 20 63 72 65 66 3d /// <see cref=
be20: 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f "SQLiteConnectio
be30: 6e 45 76 65 6e 74 48 61 6e 64 6c 65 72 22 20 2f nEventHandler" /
be40: 3e 0d 0a 20 20 2f 2f 2f 20 64 65 6c 65 67 61 74 >.. /// delegat
be50: 65 20 28 61 6e 64 20 69 74 73 20 63 6f 72 72 65 e (and its corre
be60: 73 70 6f 6e 64 69 6e 67 20 65 76 65 6e 74 29 20 sponding event)
be70: 61 6e 64 20 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c and the.. /// <
be80: 73 65 65 20 63 72 65 66 3d 22 43 6f 6e 6e 65 63 see cref="Connec
be90: 74 69 6f 6e 45 76 65 6e 74 41 72 67 73 22 20 2f tionEventArgs" /
bea0: 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 2f 2f 2f 20 > class... ///
beb0: 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70 75 </summary>.. pu
bec0: 62 6c 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 blic enum SQLite
bed0: 43 6f 6e 6e 65 63 74 69 6f 6e 45 76 65 6e 74 54 ConnectionEventT
bee0: 79 70 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 ype.. {..
bef0: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
bf00: 20 20 20 20 20 2f 2f 2f 20 4e 6f 74 20 75 73 65 /// Not use
bf10: 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 2f d... /// </
bf20: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 summary>..
bf30: 49 6e 76 61 6c 69 64 20 3d 20 2d 31 2c 0d 0a 0d Invalid = -1,...
bf40: 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d . /// <summ
bf50: 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 ary>.. ///
bf60: 4e 6f 74 20 75 73 65 64 2e 0d 0a 20 20 20 20 20 Not used...
bf70: 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d /// </summary>.
bf80: 0a 20 20 20 20 20 20 55 6e 6b 6e 6f 77 6e 20 3d . Unknown =
bf90: 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 0,.... ///
bfa0: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
bfb0: 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e 6e 65 63 /// The connec
bfc0: 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 6f 70 tion is being op
bfd0: 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f ened... ///
bfe0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
bff0: 20 20 20 4f 70 65 6e 69 6e 67 20 3d 20 31 2c 0d Opening = 1,.
c000: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 ... /// <su
c010: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f mmary>.. //
c020: 2f 20 54 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e / The connection
c030: 20 73 74 72 69 6e 67 20 68 61 73 20 62 65 65 6e string has been
c040: 20 70 61 72 73 65 64 2e 0d 0a 20 20 20 20 20 20 parsed...
c050: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
c060: 20 20 20 20 20 20 43 6f 6e 6e 65 63 74 69 6f 6e Connection
c070: 53 74 72 69 6e 67 20 3d 20 32 2c 0d 0a 0d 0a 20 String = 2,....
c080: 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 /// <summar
c090: 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 y>.. /// Th
c0a0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 e connection was
c0b0: 20 6f 70 65 6e 65 64 2e 0d 0a 20 20 20 20 20 20 opened...
c0c0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
c0d0: 20 20 20 20 20 20 4f 70 65 6e 65 64 20 3d 20 33 Opened = 3
c0e0: 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c ,.... /// <
c0f0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 summary>..
c100: 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 65 /// The <see cre
c110: 66 3d 22 43 68 61 6e 67 65 44 61 74 61 62 61 73 f="ChangeDatabas
c120: 65 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 61 73 e" /> method was
c130: 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65 0d 0a called on the..
c140: 20 20 20 20 20 20 2f 2f 2f 20 63 6f 6e 6e 65 63 /// connec
c150: 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f tion... ///
c160: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
c170: 20 20 20 43 68 61 6e 67 65 44 61 74 61 62 61 73 ChangeDatabas
c180: 65 20 3d 20 34 2c 0d 0a 0d 0a 20 20 20 20 20 20 e = 4,....
c190: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
c1a0: 20 20 20 20 20 2f 2f 2f 20 41 20 74 72 61 6e 73 /// A trans
c1b0: 61 63 74 69 6f 6e 20 77 61 73 20 63 72 65 61 74 action was creat
c1c0: 65 64 20 75 73 69 6e 67 20 74 68 65 20 63 6f 6e ed using the con
c1d0: 6e 65 63 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 nection...
c1e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
c1f0: 20 20 20 20 20 20 4e 65 77 54 72 61 6e 73 61 63 NewTransac
c200: 74 69 6f 6e 20 3d 20 35 2c 0d 0a 0d 0a 20 20 20 tion = 5,....
c210: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e /// <summary>
c220: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 .. /// The
c230: 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 65 connection was e
c240: 6e 6c 69 73 74 65 64 20 69 6e 74 6f 20 61 20 74 nlisted into a t
c250: 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 20 ransaction...
c260: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
c270: 3e 0d 0a 20 20 20 20 20 20 45 6e 6c 69 73 74 54 >.. EnlistT
c280: 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20 36 2c 0d ransaction = 6,.
c290: 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 ... /// <su
c2a0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f mmary>.. //
c2b0: 2f 20 41 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 / A command was
c2c0: 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68 created using th
c2d0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 20 e connection...
c2e0: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 /// </summa
c2f0: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 65 77 43 6f ry>.. NewCo
c300: 6d 6d 61 6e 64 20 3d 20 37 2c 0d 0a 0d 0a 20 20 mmand = 7,....
c310: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 /// <summary
c320: 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 65 >.. /// The
c330: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 connection is b
c340: 65 69 6e 67 20 63 6c 6f 73 65 64 2e 0d 0a 20 20 eing closed...
c350: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 /// </summar
c360: 79 3e 0d 0a 20 20 20 20 20 20 43 6c 6f 73 69 6e y>.. Closin
c370: 67 20 3d 20 38 2c 0d 0a 0d 0a 20 20 20 20 20 20 g = 8,....
c380: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 /// <summary>..
c390: 20 20 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6e /// The con
c3a0: 6e 65 63 74 69 6f 6e 20 77 61 73 20 63 6c 6f 73 nection was clos
c3b0: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c ed... /// <
c3c0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 /summary>..
c3d0: 20 43 6c 6f 73 65 64 20 3d 20 39 0d 0a 20 20 7d Closed = 9.. }
c3e0: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .... /// <summa
c3f0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 69 73 20 ry>.. /// This
c400: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f implementation o
c410: 66 20 53 51 4c 69 74 65 20 66 6f 72 20 41 44 4f f SQLite for ADO
c420: 2e 4e 45 54 20 63 61 6e 20 70 72 6f 63 65 73 73 .NET can process
c430: 20 64 61 74 65 2f 74 69 6d 65 20 66 69 65 6c 64 date/time field
c440: 73 20 69 6e 20 64 61 74 61 62 61 73 65 73 20 69 s in databases i
c450: 6e 20 6f 6e 6c 79 20 6f 6e 65 20 6f 66 20 74 68 n only one of th
c460: 72 65 65 20 66 6f 72 6d 61 74 73 2e 20 20 54 69 ree formats. Ti
c470: 63 6b 73 2c 20 49 53 4f 38 36 30 31 0d 0a 20 20 cks, ISO8601..
c480: 2f 2f 2f 20 61 6e 64 20 4a 75 6c 69 61 6e 44 61 /// and JulianDa
c490: 79 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d y... /// </summ
c4a0: 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 3c 72 65 6d ary>.. /// <rem
c4b0: 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f 20 49 53 4f arks>.. /// ISO
c4c0: 38 36 30 31 20 69 73 20 6d 6f 72 65 20 63 6f 6d 8601 is more com
c4d0: 70 61 74 69 62 6c 65 2c 20 72 65 61 64 61 62 6c patible, readabl
c4e0: 65 2c 20 66 75 6c 6c 79 2d 70 72 6f 63 65 73 73 e, fully-process
c4f0: 61 62 6c 65 2c 20 62 75 74 20 6c 65 73 73 20 61 able, but less a
c500: 63 63 75 72 61 74 65 20 61 73 20 69 74 20 64 6f ccurate as it do
c510: 65 73 6e 27 74 20 70 72 6f 76 69 64 65 20 74 69 esn't provide ti
c520: 6d 65 20 64 6f 77 6e 20 74 6f 20 66 72 61 63 74 me down to fract
c530: 69 6f 6e 73 20 6f 66 20 61 20 73 65 63 6f 6e 64 ions of a second
c540: 2e 0d 0a 20 20 2f 2f 2f 20 4a 75 6c 69 61 6e 44 ... /// JulianD
c550: 61 79 20 69 73 20 74 68 65 20 6e 75 6d 65 72 69 ay is the numeri
c560: 63 20 66 6f 72 6d 61 74 20 74 68 65 20 53 51 4c c format the SQL
c570: 69 74 65 20 75 73 65 73 20 69 6e 74 65 72 6e 61 ite uses interna
c580: 6c 6c 79 20 61 6e 64 20 69 73 20 61 72 67 75 61 lly and is argua
c590: 62 6c 79 20 74 68 65 20 6d 6f 73 74 20 63 6f 6d bly the most com
c5a0: 70 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 patible with 3rd
c5b0: 20 70 61 72 74 79 20 74 6f 6f 6c 73 2e 20 20 49 party tools. I
c5c0: 74 20 69 73 0d 0a 20 20 2f 2f 2f 20 6e 6f 74 20 t is.. /// not
c5d0: 72 65 61 64 61 62 6c 65 20 61 73 20 74 65 78 74 readable as text
c5e0: 20 77 69 74 68 6f 75 74 20 70 6f 73 74 2d 70 72 without post-pr
c5f0: 6f 63 65 73 73 69 6e 67 2e 0d 0a 20 20 2f 2f 2f ocessing... ///
c600: 20 54 69 63 6b 73 20 6c 65 73 73 20 63 6f 6d 70 Ticks less comp
c610: 61 74 69 62 6c 65 20 77 69 74 68 20 33 72 64 20 atible with 3rd
c620: 70 61 72 74 79 20 74 6f 6f 6c 73 20 74 68 61 74 party tools that
c630: 20 71 75 65 72 79 20 74 68 65 20 64 61 74 61 62 query the datab
c640: 61 73 65 2c 20 61 6e 64 20 72 65 6e 64 65 72 73 ase, and renders
c650: 20 74 68 65 20 44 61 74 65 54 69 6d 65 20 66 69 the DateTime fi
c660: 65 6c 64 20 75 6e 72 65 61 64 61 62 6c 65 20 61 eld unreadable a
c670: 73 20 74 65 78 74 20 77 69 74 68 6f 75 74 20 70 s text without p
c680: 6f 73 74 2d 70 72 6f 63 65 73 73 69 6e 67 2e 0d ost-processing..
c690: 0a 20 20 2f 2f 2f 0d 0a 20 20 2f 2f 2f 20 54 68 . ///.. /// Th
c6a0: 65 20 70 72 65 66 65 72 72 65 64 20 6f 72 64 65 e preferred orde
c6b0: 72 20 6f 66 20 63 68 6f 6f 73 69 6e 67 20 61 20 r of choosing a
c6c0: 64 61 74 65 74 69 6d 65 20 66 6f 72 6d 61 74 20 datetime format
c6d0: 69 73 20 4a 75 6c 69 61 6e 44 61 79 2c 20 49 53 is JulianDay, IS
c6e0: 4f 38 36 30 31 2c 20 61 6e 64 20 74 68 65 6e 20 O8601, and then
c6f0: 54 69 63 6b 73 2e 20 20 54 69 63 6b 73 20 69 73 Ticks. Ticks is
c700: 20 6d 61 69 6e 6c 79 20 70 72 65 73 65 6e 74 20 mainly present
c710: 66 6f 72 20 6c 65 67 61 63 79 0d 0a 20 20 2f 2f for legacy.. //
c720: 2f 20 63 6f 64 65 20 73 75 70 70 6f 72 74 2e 0d / code support..
c730: 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 . /// </remarks
c740: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d >.. public enum
c750: 20 53 51 4c 69 74 65 44 61 74 65 46 6f 72 6d 61 SQLiteDateForma
c760: 74 73 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f ts.. {.. ///
c770: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
c780: 2f 2f 2f 20 55 73 65 20 74 68 65 20 76 61 6c 75 /// Use the valu
c790: 65 20 6f 66 20 44 61 74 65 54 69 6d 65 2e 54 69 e of DateTime.Ti
c7a0: 63 6b 73 2e 20 20 54 68 69 73 20 76 61 6c 75 65 cks. This value
c7b0: 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e is not recommen
c7c0: 64 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20 77 ded and is not w
c7d0: 65 6c 6c 20 73 75 70 70 6f 72 74 65 64 20 77 69 ell supported wi
c7e0: 74 68 20 4c 49 4e 51 2e 0d 0a 20 20 20 20 2f 2f th LINQ... //
c7f0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
c800: 20 20 54 69 63 6b 73 20 3d 20 30 2c 0d 0a 20 20 Ticks = 0,..
c810: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d /// <summary>.
c820: 0a 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 . /// Use the
c830: 20 49 53 4f 2d 38 36 30 31 20 66 6f 72 6d 61 74 ISO-8601 format
c840: 2e 20 20 55 73 65 73 20 74 68 65 20 22 79 79 79 . Uses the "yyy
c850: 79 2d 4d 4d 2d 64 64 20 48 48 3a 6d 6d 3a 73 73 y-MM-dd HH:mm:ss
c860: 2e 46 46 46 46 46 46 46 4b 22 20 66 6f 72 6d 61 .FFFFFFFK" forma
c870: 74 20 66 6f 72 20 55 54 43 20 44 61 74 65 54 69 t for UTC DateTi
c880: 6d 65 20 76 61 6c 75 65 73 20 61 6e 64 0d 0a 20 me values and..
c890: 20 20 20 2f 2f 2f 20 22 79 79 79 79 2d 4d 4d 2d /// "yyyy-MM-
c8a0: 64 64 20 48 48 3a 6d 6d 3a 73 73 2e 46 46 46 46 dd HH:mm:ss.FFFF
c8b0: 46 46 46 22 20 66 6f 72 6d 61 74 20 66 6f 72 20 FFF" format for
c8c0: 6c 6f 63 61 6c 20 44 61 74 65 54 69 6d 65 20 76 local DateTime v
c8d0: 61 6c 75 65 73 29 2e 0d 0a 20 20 20 20 2f 2f 2f alues)... ///
c8e0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
c8f0: 20 49 53 4f 38 36 30 31 20 3d 20 31 2c 0d 0a 20 ISO8601 = 1,..
c900: 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e /// <summary>
c910: 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 69 6e .. /// The in
c920: 74 65 72 76 61 6c 20 6f 66 20 74 69 6d 65 20 69 terval of time i
c930: 6e 20 64 61 79 73 20 61 6e 64 20 66 72 61 63 74 n days and fract
c940: 69 6f 6e 73 20 6f 66 20 61 20 64 61 79 20 73 69 ions of a day si
c950: 6e 63 65 20 4a 61 6e 75 61 72 79 20 31 2c 20 34 nce January 1, 4
c960: 37 31 33 20 42 43 2e 0d 0a 20 20 20 20 2f 2f 2f 713 BC... ///
c970: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
c980: 20 4a 75 6c 69 61 6e 44 61 79 20 3d 20 32 2c 0d JulianDay = 2,.
c990: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
c9a0: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 65 20 y>.. /// The
c9b0: 77 68 6f 6c 65 20 6e 75 6d 62 65 72 20 6f 66 20 whole number of
c9c0: 73 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 74 68 seconds since th
c9d0: 65 20 55 6e 69 78 20 65 70 6f 63 68 20 28 4a 61 e Unix epoch (Ja
c9e0: 6e 75 61 72 79 20 31 2c 20 31 39 37 30 29 2e 0d nuary 1, 1970)..
c9f0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
ca00: 72 79 3e 0d 0a 20 20 20 20 55 6e 69 78 45 70 6f ry>.. UnixEpo
ca10: 63 68 20 3d 20 33 2c 0d 0a 20 20 20 20 2f 2f 2f ch = 3,.. ///
ca20: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
ca30: 2f 2f 2f 20 41 6e 79 20 63 75 6c 74 75 72 65 2d /// Any culture-
ca40: 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 74 72 69 independent stri
ca50: 6e 67 20 76 61 6c 75 65 20 74 68 61 74 20 74 68 ng value that th
ca60: 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b e .NET Framework
ca70: 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 61 can interpret a
ca80: 73 20 61 20 76 61 6c 69 64 20 44 61 74 65 54 69 s a valid DateTi
ca90: 6d 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 me... /// </s
caa0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 49 6e 76 ummary>.. Inv
cab0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20 3d 20 ariantCulture =
cac0: 34 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 4,.. /// <sum
cad0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 41 mary>.. /// A
cae0: 6e 79 20 73 74 72 69 6e 67 20 76 61 6c 75 65 20 ny string value
caf0: 74 68 61 74 20 74 68 65 20 2e 4e 45 54 20 46 72 that the .NET Fr
cb00: 61 6d 65 77 6f 72 6b 20 63 61 6e 20 69 6e 74 65 amework can inte
cb10: 72 70 72 65 74 20 61 73 20 61 20 76 61 6c 69 64 rpret as a valid
cb20: 20 44 61 74 65 54 69 6d 65 20 75 73 69 6e 67 20 DateTime using
cb30: 74 68 65 20 63 75 72 72 65 6e 74 20 63 75 6c 74 the current cult
cb40: 75 72 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f ure... /// </
cb50: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 43 75 summary>.. Cu
cb60: 72 72 65 6e 74 43 75 6c 74 75 72 65 20 3d 20 35 rrentCulture = 5
cb70: 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d ,.. /// <summ
cb80: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 54 68 ary>.. /// Th
cb90: 65 20 64 65 66 61 75 6c 74 20 66 6f 72 6d 61 74 e default format
cba0: 20 66 6f 72 20 74 68 69 73 20 70 72 6f 76 69 64 for this provid
cbb0: 65 72 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 er... /// </s
cbc0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 ummary>.. Def
cbd0: 61 75 6c 74 20 3d 20 49 53 4f 38 36 30 31 0d 0a ault = ISO8601..
cbe0: 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 }.... /// <su
cbf0: 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 mmary>.. /// Th
cc00: 69 73 20 65 6e 75 6d 20 64 65 74 65 72 6d 69 6e is enum determin
cc10: 65 73 20 68 6f 77 20 53 51 4c 69 74 65 20 74 72 es how SQLite tr
cc20: 65 61 74 73 20 69 74 73 20 6a 6f 75 72 6e 61 6c eats its journal
cc30: 20 66 69 6c 65 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f file... /// </
cc40: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 summary>.. ///
cc50: 3c 72 65 6d 61 72 6b 73 3e 0d 0a 20 20 2f 2f 2f <remarks>.. ///
cc60: 20 42 79 20 64 65 66 61 75 6c 74 20 53 51 4c 69 By default SQLi
cc70: 74 65 20 77 69 6c 6c 20 63 72 65 61 74 65 20 61 te will create a
cc80: 6e 64 20 64 65 6c 65 74 65 20 74 68 65 20 6a 6f nd delete the jo
cc90: 75 72 6e 61 6c 20 66 69 6c 65 20 77 68 65 6e 20 urnal file when
cca0: 6e 65 65 64 65 64 20 64 75 72 69 6e 67 20 61 20 needed during a
ccb0: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0d 0a 20 20 transaction...
ccc0: 2f 2f 2f 20 48 6f 77 65 76 65 72 2c 20 66 6f 72 /// However, for
ccd0: 20 73 6f 6d 65 20 63 6f 6d 70 75 74 65 72 73 20 some computers
cce0: 72 75 6e 6e 69 6e 67 20 63 65 72 74 61 69 6e 20 running certain
ccf0: 66 69 6c 65 73 79 73 74 65 6d 20 6d 6f 6e 69 74 filesystem monit
cd00: 6f 72 69 6e 67 20 74 6f 6f 6c 73 2c 20 74 68 65 oring tools, the
cd10: 20 72 61 70 69 64 0d 0a 20 20 2f 2f 2f 20 63 72 rapid.. /// cr
cd20: 65 61 74 69 6f 6e 20 61 6e 64 20 64 65 6c 65 74 eation and delet
cd30: 69 6f 6e 20 6f 66 20 74 68 65 20 6a 6f 75 72 6e ion of the journ
cd40: 61 6c 20 66 69 6c 65 20 63 61 6e 20 63 61 75 73 al file can caus
cd50: 65 20 74 68 6f 73 65 20 70 72 6f 67 72 61 6d 73 e those programs
cd60: 20 74 6f 20 66 61 69 6c 2c 20 6f 72 20 74 6f 20 to fail, or to
cd70: 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 53 interfere with S
cd80: 51 4c 69 74 65 2e 0d 0a 20 20 2f 2f 2f 0d 0a 20 QLite... ///..
cd90: 20 2f 2f 2f 20 49 66 20 61 20 70 72 6f 67 72 61 /// If a progra
cda0: 6d 20 6f 72 20 76 69 72 75 73 20 73 63 61 6e 6e m or virus scann
cdb0: 65 72 20 69 73 20 69 6e 74 65 72 66 65 72 69 6e er is interferin
cdc0: 67 20 77 69 74 68 20 53 51 4c 69 74 65 27 73 20 g with SQLite's
cdd0: 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 2c 20 79 6f journal file, yo
cde0: 75 20 6d 61 79 20 72 65 63 65 69 76 65 20 65 72 u may receive er
cdf0: 72 6f 72 73 20 6c 69 6b 65 20 22 75 6e 61 62 6c rors like "unabl
ce00: 65 20 74 6f 20 6f 70 65 6e 20 64 61 74 61 62 61 e to open databa
ce10: 73 65 20 66 69 6c 65 22 0d 0a 20 20 2f 2f 2f 20 se file".. ///
ce20: 77 68 65 6e 20 73 74 61 72 74 69 6e 67 20 61 20 when starting a
ce30: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20 49 66 transaction. If
ce40: 20 74 68 69 73 20 69 73 20 68 61 70 70 65 6e 69 this is happeni
ce50: 6e 67 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 ng, you may want
ce60: 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 64 to change the d
ce70: 65 66 61 75 6c 74 20 6a 6f 75 72 6e 61 6c 20 6d efault journal m
ce80: 6f 64 65 20 74 6f 20 50 65 72 73 69 73 74 2e 0d ode to Persist..
ce90: 0a 20 20 2f 2f 2f 20 3c 2f 72 65 6d 61 72 6b 73 . /// </remarks
cea0: 3e 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d >.. public enum
ceb0: 20 53 51 4c 69 74 65 4a 6f 75 72 6e 61 6c 4d 6f SQLiteJournalMo
cec0: 64 65 45 6e 75 6d 0d 0a 20 20 7b 0d 0a 20 20 20 deEnum.. {..
ced0: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a /// <summary>..
cee0: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 65 66 61 /// The defa
cef0: 75 6c 74 20 6d 6f 64 65 2c 20 74 68 69 73 20 63 ult mode, this c
cf00: 61 75 73 65 73 20 53 51 4c 69 74 65 20 74 6f 20 auses SQLite to
cf10: 75 73 65 20 74 68 65 20 65 78 69 73 74 69 6e 67 use the existing
cf20: 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d 6f 64 65 journaling mode
cf30: 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73 for the databas
cf40: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 e... /// </su
cf50: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 44 65 66 61 mmary>.. Defa
cf60: 75 6c 74 20 3d 20 2d 31 2c 0d 0a 20 20 20 20 2f ult = -1,.. /
cf70: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 // <summary>..
cf80: 20 20 2f 2f 2f 20 53 51 4c 69 74 65 20 77 69 6c /// SQLite wil
cf90: 6c 20 63 72 65 61 74 65 20 61 6e 64 20 64 65 73 l create and des
cfa0: 74 72 6f 79 20 74 68 65 20 6a 6f 75 72 6e 61 6c troy the journal
cfb0: 20 66 69 6c 65 20 61 73 2d 6e 65 65 64 65 64 2e file as-needed.
cfc0: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d .. /// </summ
cfd0: 61 72 79 3e 0d 0a 20 20 20 20 44 65 6c 65 74 65 ary>.. Delete
cfe0: 20 3d 20 30 2c 0d 0a 20 20 20 20 2f 2f 2f 20 3c = 0,.. /// <
cff0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f summary>.. //
d000: 2f 20 57 68 65 6e 20 74 68 69 73 20 69 73 20 73 / When this is s
d010: 65 74 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 et, SQLite will
d020: 6b 65 65 70 20 74 68 65 20 6a 6f 75 72 6e 61 6c keep the journal
d030: 20 66 69 6c 65 20 65 76 65 6e 20 61 66 74 65 72 file even after
d040: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 a transaction h
d050: 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 20 20 49 as completed. I
d060: 74 27 73 20 63 6f 6e 74 65 6e 74 73 20 77 69 6c t's contents wil
d070: 6c 20 62 65 20 65 72 61 73 65 64 2c 0d 0a 20 20 l be erased,..
d080: 20 20 2f 2f 2f 20 61 6e 64 20 74 68 65 20 6a 6f /// and the jo
d090: 75 72 6e 61 6c 20 72 65 2d 75 73 65 64 20 61 73 urnal re-used as
d0a0: 20 6f 66 74 65 6e 20 61 73 20 6e 65 65 64 65 64 often as needed
d0b0: 2e 20 20 49 66 20 69 74 20 69 73 20 64 65 6c 65 . If it is dele
d0c0: 74 65 64 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 ted, it will be
d0d0: 72 65 63 72 65 61 74 65 64 20 74 68 65 20 6e 65 recreated the ne
d0e0: 78 74 20 74 69 6d 65 20 69 74 20 69 73 20 6e 65 xt time it is ne
d0f0: 65 64 65 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c eded... /// <
d100: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 50 /summary>.. P
d110: 65 72 73 69 73 74 20 3d 20 31 2c 0d 0a 20 20 20 ersist = 1,..
d120: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a /// <summary>..
d130: 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 6f 70 74 /// This opt
d140: 69 6f 6e 20 64 69 73 61 62 6c 65 73 20 74 68 65 ion disables the
d150: 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 rollback journa
d160: 6c 20 65 6e 74 69 72 65 6c 79 2e 20 20 49 6e 74 l entirely. Int
d170: 65 72 72 75 70 74 65 64 20 74 72 61 6e 73 61 63 errupted transac
d180: 74 69 6f 6e 73 20 6f 72 20 61 20 70 72 6f 67 72 tions or a progr
d190: 61 6d 20 63 72 61 73 68 20 63 61 6e 20 63 61 75 am crash can cau
d1a0: 73 65 20 64 61 74 61 62 61 73 65 0d 0a 20 20 20 se database..
d1b0: 20 2f 2f 2f 20 63 6f 72 72 75 70 74 69 6f 6e 20 /// corruption
d1c0: 69 6e 20 74 68 69 73 20 6d 6f 64 65 21 0d 0a 20 in this mode!..
d1d0: 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 /// </summary
d1e0: 3e 0d 0a 20 20 20 20 4f 66 66 20 3d 20 32 2c 0d >.. Off = 2,.
d1f0: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
d200: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 y>.. /// SQLi
d210: 74 65 20 77 69 6c 6c 20 74 72 75 6e 63 61 74 65 te will truncate
d220: 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c the journal fil
d230: 65 20 74 6f 20 7a 65 72 6f 2d 6c 65 6e 67 74 68 e to zero-length
d240: 20 69 6e 73 74 65 61 64 20 6f 66 20 64 65 6c 65 instead of dele
d250: 74 69 6e 67 20 69 74 2e 0d 0a 20 20 20 20 2f 2f ting it... //
d260: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
d270: 20 20 54 72 75 6e 63 61 74 65 20 3d 20 33 2c 0d Truncate = 3,.
d280: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 . /// <summar
d290: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 y>.. /// SQLi
d2a0: 74 65 20 77 69 6c 6c 20 73 74 6f 72 65 20 74 68 te will store th
d2b0: 65 20 6a 6f 75 72 6e 61 6c 20 69 6e 20 76 6f 6c e journal in vol
d2c0: 61 74 69 6c 65 20 52 41 4d 2e 20 20 54 68 69 73 atile RAM. This
d2d0: 20 73 61 76 65 73 20 64 69 73 6b 20 49 2f 4f 20 saves disk I/O
d2e0: 62 75 74 20 61 74 20 74 68 65 20 65 78 70 65 6e but at the expen
d2f0: 73 65 20 6f 66 20 64 61 74 61 62 61 73 65 20 73 se of database s
d300: 61 66 65 74 79 20 61 6e 64 20 69 6e 74 65 67 72 afety and integr
d310: 69 74 79 2e 0d 0a 20 20 20 20 2f 2f 2f 20 49 66 ity... /// If
d320: 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e the application
d330: 20 75 73 69 6e 67 20 53 51 4c 69 74 65 20 63 72 using SQLite cr
d340: 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64 ashes in the mid
d350: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 dle of a transac
d360: 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 4d 45 tion when the ME
d370: 4d 4f 52 59 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 MORY journaling
d380: 6d 6f 64 65 20 69 73 20 73 65 74 2c 20 74 68 65 mode is set, the
d390: 6e 20 74 68 65 0d 0a 20 20 20 20 2f 2f 2f 20 64 n the.. /// d
d3a0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c atabase file wil
d3b0: 6c 20 76 65 72 79 20 6c 69 6b 65 6c 79 20 67 6f l very likely go
d3c0: 20 63 6f 72 72 75 70 74 2e 0d 0a 20 20 20 20 2f corrupt... /
d3d0: 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 // </summary>..
d3e0: 20 20 20 4d 65 6d 6f 72 79 20 3d 20 34 2c 0d 0a Memory = 4,..
d3f0: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 /// <summary
d400: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 53 51 4c 69 74 >.. /// SQLit
d410: 65 20 75 73 65 73 20 61 20 77 72 69 74 65 2d 61 e uses a write-a
d420: 68 65 61 64 20 6c 6f 67 20 69 6e 73 74 65 61 64 head log instead
d430: 20 6f 66 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6a of a rollback j
d440: 6f 75 72 6e 61 6c 20 74 6f 20 69 6d 70 6c 65 6d ournal to implem
d450: 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 ent transactions
d460: 2e 20 20 54 68 65 20 57 41 4c 20 6a 6f 75 72 6e . The WAL journ
d470: 61 6c 69 6e 67 20 6d 6f 64 65 20 69 73 20 70 65 aling mode is pe
d480: 72 73 69 73 74 65 6e 74 3b 0d 0a 20 20 20 20 2f rsistent;.. /
d490: 2f 2f 20 61 66 74 65 72 20 62 65 69 6e 67 20 73 // after being s
d4a0: 65 74 20 69 74 20 73 74 61 79 73 20 69 6e 20 65 et it stays in e
d4b0: 66 66 65 63 74 20 61 63 72 6f 73 73 20 6d 75 6c ffect across mul
d4c0: 74 69 70 6c 65 20 64 61 74 61 62 61 73 65 20 63 tiple database c
d4d0: 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 6e 64 20 61 onnections and a
d4e0: 66 74 65 72 20 63 6c 6f 73 69 6e 67 20 61 6e 64 fter closing and
d4f0: 20 72 65 6f 70 65 6e 69 6e 67 20 74 68 65 20 64 reopening the d
d500: 61 74 61 62 61 73 65 2e 20 41 20 64 61 74 61 62 atabase. A datab
d510: 61 73 65 0d 0a 20 20 20 20 2f 2f 2f 20 69 6e 20 ase.. /// in
d520: 57 41 4c 20 6a 6f 75 72 6e 61 6c 69 6e 67 20 6d WAL journaling m
d530: 6f 64 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 ode can only be
d540: 61 63 63 65 73 73 65 64 20 62 79 20 53 51 4c 69 accessed by SQLi
d550: 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 te version 3.7.0
d560: 20 6f 72 20 6c 61 74 65 72 2e 0d 0a 20 20 20 20 or later...
d570: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
d580: 20 20 20 20 57 61 6c 20 3d 20 35 0d 0a 20 20 7d Wal = 5.. }
d590: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .... /// <summa
d5a0: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 50 6f 73 73 69 ry>.. /// Possi
d5b0: 62 6c 65 20 76 61 6c 75 65 73 20 66 6f 72 20 74 ble values for t
d5c0: 68 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 he "synchronous"
d5d0: 20 64 61 74 61 62 61 73 65 20 73 65 74 74 69 6e database settin
d5e0: 67 2e 20 20 54 68 69 73 20 73 65 74 74 69 6e 67 g. This setting
d5f0: 20 64 65 74 65 72 6d 69 6e 65 73 0d 0a 20 20 2f determines.. /
d600: 2f 2f 20 68 6f 77 20 6f 66 74 65 6e 20 74 68 65 // how often the
d610: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65 database engine
d620: 20 63 61 6c 6c 73 20 74 68 65 20 78 53 79 6e 63 calls the xSync
d630: 20 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56 method of the V
d640: 46 53 2e 0d 0a 20 20 2f 2f 2f 20 3c 2f 73 75 6d FS... /// </sum
d650: 6d 61 72 79 3e 0d 0a 20 20 69 6e 74 65 72 6e 61 mary>.. interna
d660: 6c 20 65 6e 75 6d 20 53 51 4c 69 74 65 53 79 6e l enum SQLiteSyn
d670: 63 68 72 6f 6e 6f 75 73 45 6e 75 6d 0d 0a 20 20 chronousEnum..
d680: 7b 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 {.. /// <su
d690: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f mmary>.. //
d6a0: 2f 20 55 73 65 20 74 68 65 20 64 65 66 61 75 6c / Use the defaul
d6b0: 74 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 t "synchronous"
d6c0: 64 61 74 61 62 61 73 65 20 73 65 74 74 69 6e 67 database setting
d6d0: 2e 20 20 43 75 72 72 65 6e 74 6c 79 2c 20 74 68 . Currently, th
d6e0: 69 73 20 73 68 6f 75 6c 64 20 62 65 0d 0a 20 20 is should be..
d6f0: 20 20 20 20 2f 2f 2f 20 74 68 65 20 73 61 6d 65 /// the same
d700: 20 61 73 20 75 73 69 6e 67 20 74 68 65 20 46 55 as using the FU
d710: 4c 4c 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20 20 LL mode...
d720: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
d730: 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 Default =
d740: 2d 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f -1,.... ///
d750: 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 <summary>..
d760: 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 62 61 /// The databa
d770: 73 65 20 65 6e 67 69 6e 65 20 63 6f 6e 74 69 6e se engine contin
d780: 75 65 73 20 77 69 74 68 6f 75 74 20 73 79 6e 63 ues without sync
d790: 69 6e 67 20 61 73 20 73 6f 6f 6e 20 61 73 20 69 ing as soon as i
d7a0: 74 20 68 61 73 20 68 61 6e 64 65 64 0d 0a 20 20 t has handed..
d7b0: 20 20 20 20 2f 2f 2f 20 64 61 74 61 20 6f 66 66 /// data off
d7c0: 20 74 6f 20 74 68 65 20 6f 70 65 72 61 74 69 6e to the operatin
d7d0: 67 20 73 79 73 74 65 6d 2e 20 20 49 66 20 74 68 g system. If th
d7e0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 75 e application ru
d7f0: 6e 6e 69 6e 67 20 53 51 4c 69 74 65 0d 0a 20 20 nning SQLite..
d800: 20 20 20 20 2f 2f 2f 20 63 72 61 73 68 65 73 2c /// crashes,
d810: 20 74 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 the data will b
d820: 65 20 73 61 66 65 2c 20 62 75 74 20 74 68 65 20 e safe, but the
d830: 64 61 74 61 62 61 73 65 20 6d 69 67 68 74 20 62 database might b
d840: 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 0d ecome corrupted.
d850: 0a 20 20 20 20 20 20 2f 2f 2f 20 69 66 20 74 68 . /// if th
d860: 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 e operating syst
d870: 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20 74 68 em crashes or th
d880: 65 20 63 6f 6d 70 75 74 65 72 20 6c 6f 73 65 73 e computer loses
d890: 20 70 6f 77 65 72 20 62 65 66 6f 72 65 20 74 68 power before th
d8a0: 61 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 64 61 at.. /// da
d8b0: 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69 74 ta has been writ
d8c0: 74 65 6e 20 74 6f 20 74 68 65 20 64 69 73 6b 20 ten to the disk
d8d0: 73 75 72 66 61 63 65 2e 0d 0a 20 20 20 20 20 20 surface...
d8e0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a /// </summary>..
d8f0: 20 20 20 20 20 20 4f 66 66 20 3d 20 30 2c 0d 0a Off = 0,..
d900: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d .. /// <sum
d910: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f mary>.. ///
d920: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 65 6e The database en
d930: 67 69 6e 65 20 77 69 6c 6c 20 73 74 69 6c 6c 20 gine will still
d940: 73 79 6e 63 20 61 74 20 74 68 65 20 6d 6f 73 74 sync at the most
d950: 20 63 72 69 74 69 63 61 6c 20 6d 6f 6d 65 6e 74 critical moment
d960: 73 2c 20 62 75 74 0d 0a 20 20 20 20 20 20 2f 2f s, but.. //
d970: 2f 20 6c 65 73 73 20 6f 66 74 65 6e 20 74 68 61 / less often tha
d980: 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e 20 n in FULL mode.
d990: 20 54 68 65 72 65 20 69 73 20 61 20 76 65 72 79 There is a very
d9a0: 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68 20 6e small (though n
d9b0: 6f 6e 2d 7a 65 72 6f 29 0d 0a 20 20 20 20 20 20 on-zero)..
d9c0: 2f 2f 2f 20 63 68 61 6e 63 65 20 74 68 61 74 20 /// chance that
d9d0: 61 20 70 6f 77 65 72 20 66 61 69 6c 75 72 65 20 a power failure
d9e0: 61 74 20 6a 75 73 74 20 74 68 65 20 77 72 6f 6e at just the wron
d9f0: 67 20 74 69 6d 65 20 63 6f 75 6c 64 20 63 6f 72 g time could cor
da00: 72 75 70 74 20 74 68 65 0d 0a 20 20 20 20 20 20 rupt the..
da10: 2f 2f 2f 20 64 61 74 61 62 61 73 65 20 69 6e 20 /// database in
da20: 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 0d 0a 20 20 NORMAL mode...
da30: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 /// </summar
da40: 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 72 6d 61 6c y>.. Normal
da50: 20 3d 20 31 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f = 1,.... /
da60: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 // <summary>..
da70: 20 20 20 20 2f 2f 2f 20 54 68 65 20 64 61 74 61 /// The data
da80: 62 61 73 65 20 65 6e 67 69 6e 65 20 77 69 6c 6c base engine will
da90: 20 75 73 65 20 74 68 65 20 78 53 79 6e 63 20 6d use the xSync m
daa0: 65 74 68 6f 64 20 6f 66 20 74 68 65 20 56 46 53 ethod of the VFS
dab0: 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 0d to ensure that.
dac0: 0a 20 20 20 20 20 20 2f 2f 2f 20 61 6c 6c 20 63 . /// all c
dad0: 6f 6e 74 65 6e 74 20 69 73 20 73 61 66 65 6c 79 ontent is safely
dae0: 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65 20 written to the
daf0: 64 69 73 6b 20 73 75 72 66 61 63 65 20 70 72 69 disk surface pri
db00: 6f 72 20 74 6f 20 63 6f 6e 74 69 6e 75 69 6e 67 or to continuing
db10: 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 54 68 69 ... /// Thi
db20: 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 61 s ensures that a
db30: 6e 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 n operating syst
db40: 65 6d 20 63 72 61 73 68 20 6f 72 20 70 6f 77 65 em crash or powe
db50: 72 20 66 61 69 6c 75 72 65 20 77 69 6c 6c 20 6e r failure will n
db60: 6f 74 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 63 6f ot.. /// co
db70: 72 72 75 70 74 20 74 68 65 20 64 61 74 61 62 61 rrupt the databa
db80: 73 65 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 se. FULL synchr
db90: 6f 6e 6f 75 73 20 69 73 20 76 65 72 79 20 73 61 onous is very sa
dba0: 66 65 2c 20 62 75 74 20 69 74 20 69 73 20 61 6c fe, but it is al
dbb0: 73 6f 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 73 6c so.. /// sl
dbc0: 6f 77 65 72 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f ower... ///
dbd0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
dbe0: 20 20 20 46 75 6c 6c 20 3d 20 32 0d 0a 20 20 7d Full = 2.. }
dbf0: 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 .... /// <summa
dc00: 72 79 3e 0d 0a 20 20 2f 2f 2f 20 54 68 65 20 72 ry>.. /// The r
dc10: 65 71 75 65 73 74 65 64 20 63 6f 6d 6d 61 6e 64 equested command
dc20: 20 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65 2e execution type.
dc30: 20 20 54 68 69 73 20 63 6f 6e 74 72 6f 6c 73 20 This controls
dc40: 77 68 69 63 68 20 6d 65 74 68 6f 64 20 6f 66 20 which method of
dc50: 74 68 65 0d 0a 20 20 2f 2f 2f 20 3c 73 65 65 20 the.. /// <see
dc60: 63 72 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d cref="SQLiteComm
dc70: 61 6e 64 22 20 2f 3e 20 6f 62 6a 65 63 74 20 77 and" /> object w
dc80: 69 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a ill be called...
dc90: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e /// </summary>
dca0: 0d 0a 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 .. public enum
dcb0: 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 70 SQLiteExecuteTyp
dcc0: 65 0d 0a 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f e.. {.. //
dcd0: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 / <summary>..
dce0: 20 20 20 2f 2f 2f 20 44 6f 20 6e 6f 74 68 69 6e /// Do nothin
dcf0: 67 2e 20 20 4e 6f 20 6d 65 74 68 6f 64 20 77 69 g. No method wi
dd00: 6c 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 ll be called...
dd10: 20 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 /// </summa
dd20: 72 79 3e 0d 0a 20 20 20 20 20 20 4e 6f 6e 65 20 ry>.. None
dd30: 3d 20 30 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f = 0,.... //
dd40: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 / <summary>..
dd50: 20 20 20 2f 2f 2f 20 54 68 65 20 63 6f 6d 6d 61 /// The comma
dd60: 6e 64 20 69 73 20 6e 6f 74 20 65 78 70 65 63 74 nd is not expect
dd70: 65 64 20 74 6f 20 72 65 74 75 72 6e 20 61 20 72 ed to return a r
dd80: 65 73 75 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 esult -OR- the r
dd90: 65 73 75 6c 74 20 69 73 20 6e 6f 74 0d 0a 20 20 esult is not..
dda0: 20 20 20 20 2f 2f 2f 20 6e 65 65 64 65 64 2e 20 /// needed.
ddb0: 20 54 68 65 20 3c 73 65 65 20 63 72 65 66 3d 22 The <see cref="
ddc0: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 2e 45 78 SQLiteCommand.Ex
ddd0: 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 22 20 2f ecuteNonQuery" /
dde0: 3e 20 6d 65 74 68 6f 64 20 77 69 6c 6c 0d 0a 20 > method will..
ddf0: 20 20 20 20 20 2f 2f 2f 20 62 65 20 63 61 6c 6c /// be call
de00: 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c ed... /// <
de10: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 20 /summary>..
de20: 20 4e 6f 6e 51 75 65 72 79 20 3d 20 31 2c 0d 0a NonQuery = 1,..
de30: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d .. /// <sum
de40: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f mary>.. ///
de50: 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 The command is
de60: 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75 expected to retu
de70: 72 6e 20 61 20 73 63 61 6c 61 72 20 72 65 73 75 rn a scalar resu
de80: 6c 74 20 2d 4f 52 2d 20 74 68 65 20 72 65 73 75 lt -OR- the resu
de90: 6c 74 20 73 68 6f 75 6c 64 0d 0a 20 20 20 20 20 lt should..
dea0: 20 2f 2f 2f 20 62 65 20 6c 69 6d 69 74 65 64 20 /// be limited
deb0: 74 6f 20 61 20 73 63 61 6c 61 72 20 72 65 73 75 to a scalar resu
dec0: 6c 74 2e 20 20 54 68 65 20 3c 73 65 65 20 63 72 lt. The <see cr
ded0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e ef="SQLiteComman
dee0: 64 2e 45 78 65 63 75 74 65 53 63 61 6c 61 72 22 d.ExecuteScalar"
def0: 20 2f 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 6d />.. /// m
df00: 65 74 68 6f 64 20 77 69 6c 6c 20 62 65 20 63 61 ethod will be ca
df10: 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 2f 2f 2f lled... ///
df20: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
df30: 20 20 20 53 63 61 6c 61 72 20 3d 20 32 2c 0d 0a Scalar = 2,..
df40: 0d 0a 20 20 20 20 20 20 2f 2f 2f 20 3c 73 75 6d .. /// <sum
df50: 6d 61 72 79 3e 0d 0a 20 20 20 20 20 20 2f 2f 2f mary>.. ///
df60: 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 20 The command is
df70: 65 78 70 65 63 74 65 64 20 74 6f 20 72 65 74 75 expected to retu
df80: 72 6e 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 rn <see cref="SQ
df90: 4c 69 74 65 44 61 74 61 52 65 61 64 65 72 22 2f LiteDataReader"/
dfa0: 3e 20 72 65 73 75 6c 74 2e 0d 0a 20 20 20 20 20 > result...
dfb0: 20 2f 2f 2f 20 54 68 65 20 3c 73 65 65 20 63 72 /// The <see cr
dfc0: 65 66 3d 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e ef="SQLiteComman
dfd0: 64 2e 45 78 65 63 75 74 65 52 65 61 64 65 72 28 d.ExecuteReader(
dfe0: 29 22 20 2f 3e 20 6d 65 74 68 6f 64 20 77 69 6c )" /> method wil
dff0: 6c 20 62 65 20 63 61 6c 6c 65 64 2e 0d 0a 20 20 l be called...
e000: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 /// </summar
e010: 79 3e 0d 0a 20 20 20 20 20 20 52 65 61 64 65 72 y>.. Reader
e020: 20 3d 20 33 2c 0d 0a 0d 0a 20 20 20 20 20 20 2f = 3,.... /
e030: 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 // <summary>..
e040: 20 20 20 20 2f 2f 2f 20 55 73 65 20 74 68 65 20 /// Use the
e050: 64 65 66 61 75 6c 74 20 63 6f 6d 6d 61 6e 64 20 default command
e060: 65 78 65 63 75 74 69 6f 6e 20 74 79 70 65 2e 20 execution type.
e070: 20 55 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75 Using this valu
e080: 65 20 69 73 20 74 68 65 20 73 61 6d 65 0d 0a 20 e is the same..
e090: 20 20 20 20 20 2f 2f 2f 20 61 73 20 75 73 69 6e /// as usin
e0a0: 67 20 74 68 65 20 3c 73 65 65 20 63 72 65 66 3d g the <see cref=
e0b0: 22 53 51 4c 69 74 65 45 78 65 63 75 74 65 54 79 "SQLiteExecuteTy
e0c0: 70 65 2e 4e 6f 6e 51 75 65 72 79 22 20 2f 3e 20 pe.NonQuery" />
e0d0: 76 61 6c 75 65 2e 0d 0a 20 20 20 20 20 20 2f 2f value... //
e0e0: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
e0f0: 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 4e 6f Default = No
e100: 6e 51 75 65 72 79 20 2f 2a 20 54 4f 44 4f 3a 20 nQuery /* TODO:
e110: 47 6f 6f 64 20 64 65 66 61 75 6c 74 3f 20 2a 2f Good default? */
e120: 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 20 3c .. }.... /// <
e130: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 summary>.. ///
e140: 43 6c 61 73 73 20 75 73 65 64 20 69 6e 74 65 72 Class used inter
e150: 6e 61 6c 6c 79 20 74 6f 20 64 65 74 65 72 6d 69 nally to determi
e160: 6e 65 20 74 68 65 20 64 61 74 61 74 79 70 65 20 ne the datatype
e170: 6f 66 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 61 of a column in a
e180: 20 72 65 73 75 6c 74 73 65 74 0d 0a 20 20 2f 2f resultset.. //
e190: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 / </summary>..
e1a0: 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 internal sealed
e1b0: 63 6c 61 73 73 20 53 51 4c 69 74 65 54 79 70 65 class SQLiteType
e1c0: 0d 0a 20 20 7b 0d 0a 20 20 20 20 2f 2f 2f 20 3c .. {.. /// <
e1d0: 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f summary>.. //
e1e0: 2f 20 54 68 65 20 44 62 54 79 70 65 20 6f 66 20 / The DbType of
e1f0: 74 68 65 20 63 6f 6c 75 6d 6e 2c 20 6f 72 20 44 the column, or D
e200: 62 54 79 70 65 2e 4f 62 6a 65 63 74 20 69 66 20 bType.Object if
e210: 69 74 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 it cannot be det
e220: 65 72 6d 69 6e 65 64 0d 0a 20 20 20 20 2f 2f 2f ermined.. ///
e230: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 </summary>..
e240: 20 69 6e 74 65 72 6e 61 6c 20 44 62 54 79 70 65 internal DbType
e250: 20 54 79 70 65 3b 0d 0a 20 20 20 20 2f 2f 2f 20 Type;.. ///
e260: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f <summary>.. /
e270: 2f 2f 20 54 68 65 20 61 66 66 69 6e 69 74 79 20 // The affinity
e280: 6f 66 20 61 20 63 6f 6c 75 6d 6e 2c 20 75 73 65 of a column, use
e290: 64 20 66 6f 72 20 65 78 70 72 65 73 73 69 6f 6e d for expression
e2a0: 73 20 6f 72 20 77 68 65 6e 20 54 79 70 65 20 69 s or when Type i
e2b0: 73 20 44 62 54 79 70 65 2e 4f 62 6a 65 63 74 0d s DbType.Object.
e2c0: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 . /// </summa
e2d0: 72 79 3e 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 ry>.. interna
e2e0: 6c 20 54 79 70 65 41 66 66 69 6e 69 74 79 20 41 l TypeAffinity A
e2f0: 66 66 69 6e 69 74 79 3b 0d 0a 20 20 7d 0d 0a 0d ffinity;.. }...
e300: 0a 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f . /////////////
e310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e350: 0d 0a 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 .... internal s
e360: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 ealed class SQLi
e370: 74 65 44 62 54 79 70 65 4d 61 70 0d 0a 20 20 20 teDbTypeMap..
e380: 20 20 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c : Dictionary<
e390: 73 74 72 69 6e 67 2c 20 53 51 4c 69 74 65 44 62 string, SQLiteDb
e3a0: 54 79 70 65 4d 61 70 70 69 6e 67 3e 0d 0a 20 20 TypeMapping>..
e3b0: 7b 0d 0a 20 20 20 20 20 20 70 72 69 76 61 74 65 {.. private
e3c0: 20 44 69 63 74 69 6f 6e 61 72 79 3c 44 62 54 79 Dictionary<DbTy
e3d0: 70 65 2c 20 53 51 4c 69 74 65 44 62 54 79 70 65 pe, SQLiteDbType
e3e0: 4d 61 70 70 69 6e 67 3e 20 72 65 76 65 72 73 65 Mapping> reverse
e3f0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f ;.... /////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e440: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 72 ////.... pr
e450: 69 76 61 74 65 20 53 51 4c 69 74 65 44 62 54 79 ivate SQLiteDbTy
e460: 70 65 4d 61 70 28 29 0d 0a 20 20 20 20 20 20 20 peMap()..
e470: 20 20 20 3a 20 62 61 73 65 28 6e 65 77 20 54 79 : base(new Ty
e480: 70 65 4e 61 6d 65 53 74 72 69 6e 67 43 6f 6d 70 peNameStringComp
e490: 61 72 65 72 28 29 29 0d 0a 20 20 20 20 20 20 7b arer()).. {
e4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 72 65 76 65 .. reve
e4b0: 72 73 65 20 3d 20 6e 65 77 20 44 69 63 74 69 6f rse = new Dictio
e4c0: 6e 61 72 79 3c 44 62 54 79 70 65 2c 20 53 51 4c nary<DbType, SQL
e4d0: 69 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 iteDbTypeMapping
e4e0: 3e 28 29 3b 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d >();.. }...
e4f0: 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f . /////////
e500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e540: 0d 0a 0d 0a 20 20 20 20 20 20 70 75 62 6c 69 63 .... public
e550: 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 SQLiteDbTypeMap
e560: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 49 45 6e (.. IEn
e570: 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69 74 65 44 umerable<SQLiteD
e580: 62 54 79 70 65 4d 61 70 70 69 6e 67 3e 20 63 6f bTypeMapping> co
e590: 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 llection..
e5a0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 )..
e5b0: 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 : this()..
e5c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 41 64 {.. Ad
e5d0: 64 28 63 6f 6c 6c 65 63 74 69 6f 6e 29 3b 0d 0a d(collection);..
e5e0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 }....
e5f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ///////////////
e600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 //////////....
e640: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 public void
e650: 41 64 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 Add(..
e660: 49 45 6e 75 6d 65 72 61 62 6c 65 3c 53 51 4c 69 IEnumerable<SQLi
e670: 74 65 44 62 54 79 70 65 4d 61 70 70 69 6e 67 3e teDbTypeMapping>
e680: 20 63 6f 6c 6c 65 63 74 69 6f 6e 0d 0a 20 20 20 collection..
e690: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 )..
e6a0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 {.. if
e6b0: 28 63 6f 6c 6c 65 63 74 69 6f 6e 20 3d 3d 20 6e (collection == n
e6c0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 ull)..
e6d0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 throw new Ar
e6e0: 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65 70 74 gumentNullExcept
e6f0: 69 6f 6e 28 22 63 6f 6c 6c 65 63 74 69 6f 6e 22 ion("collection"
e700: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 );....
e710: 66 6f 72 65 61 63 68 20 28 53 51 4c 69 74 65 44 foreach (SQLiteD
e720: 62 54 79 70 65 4d 61 70 70 69 6e 67 20 69 74 65 bTypeMapping ite
e730: 6d 20 69 6e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 m in collection)
e740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
e750: 41 64 64 28 69 74 65 6d 29 3b 0d 0a 20 20 20 20 Add(item);..
e760: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f }.... ///
e770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e7b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 //////....
e7c0: 70 75 62 6c 69 63 20 76 6f 69 64 20 41 64 64 28 public void Add(
e7d0: 53 51 4c 69 74 65 44 62 54 79 70 65 4d 61 70 70 SQLiteDbTypeMapp
e7e0: 69 6e 67 20 69 74 65 6d 29 0d 0a 20 20 20 20 20 ing item)..
e7f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 {.. if
e800: 20 28 69 74 65 6d 20 3d 3d 20 6e 75 6c 6c 29 0d (item == null).
e810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 . t
e820: 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e hrow new Argumen
e830: 74 4e 75 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 tNullException("
e840: 69 74 65 6d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 item");....
e850: 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 74 79 if (item.ty
e860: 70 65 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d peName == null).
e870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 . t
e880: 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65 6e hrow new Argumen
e890: 74 45 78 63 65 70 74 69 6f 6e 28 22 69 74 65 6d tException("item
e8a0: 20 74 79 70 65 20 6e 61 6d 65 20 63 61 6e 6e 6f type name canno
e8b0: 74 20 62 65 20 6e 75 6c 6c 22 29 3b 0d 0a 0d 0a t be null");....
e8c0: 20 20 20 20 20 20 20 20 20 20 62 61 73 65 2e 41 base.A
e8d0: 64 64 28 69 74 65 6d 2e 74 79 70 65 4e 61 6d 65 dd(item.typeName
e8e0: 2c 20 69 74 65 6d 29 3b 0d 0a 0d 0a 20 20 20 20 , item);....
e8f0: 20 20 20 20 20 20 69 66 20 28 69 74 65 6d 2e 70 if (item.p
e900: 72 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20 20 rimary)..
e910: 20 20 20 20 20 20 20 72 65 76 65 72 73 65 2e 41 reverse.A
e920: 64 64 28 69 74 65 6d 2e 64 61 74 61 54 79 70 65 dd(item.dataType
e930: 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20 20 , item);..
e940: 7d 0d 0a 0d 0a 20 20 20 20 20 20 2f 2f 2f 2f 2f }.... /////
e950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
e990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 70 75 ////.... pu
e9a0: 62 6c 69 63 20 62 6f 6f 6c 20 54 72 79 47 65 74 blic bool TryGet
e9b0: 56 61 6c 75 65 28 44 62 54 79 70 65 20 6b 65 79 Value(DbType key
e9c0: 2c 20 6f 75 74 20 53 51 4c 69 74 65 44 62 54 79 , out SQLiteDbTy
e9d0: 70 65 4d 61 70 70 69 6e 67 20 76 61 6c 75 65 29 peMapping value)
e9e0: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 .. {..
e9f0: 20 20 20 20 20 69 66 20 28 72 65 76 65 72 73 65 if (reverse
ea00: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 == null)..
ea10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 {..
ea20: 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 6e 75 value = nu
ea30: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 ll;..
ea40: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false;
ea50: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d .. }...
ea60: 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 . retur
ea70: 6e 20 72 65 76 65 72 73 65 2e 54 72 79 47 65 74 n reverse.TryGet
ea80: 56 61 6c 75 65 28 6b 65 79 2c 20 6f 75 74 20 76 Value(key, out v
ea90: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 7d 0d alue);.. }.
eaa0: 0a 20 20 7d 0d 0a 0d 0a 20 20 2f 2f 2f 2f 2f 2f . }.... //////
eab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
eac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
ead0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
eae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
eaf0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 69 6e 74 ///////.... int
eb00: 65 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 ernal sealed cla
eb10: 73 73 20 53 51 4c 69 74 65 44 62 54 79 70 65 4d ss SQLiteDbTypeM
eb20: 61 70 70 69 6e 67 0d 0a 20 20 7b 0d 0a 20 20 20 apping.. {..
eb30: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65 internal SQLite
eb40: 44 62 54 79 70 65 4d 61 70 70 69 6e 67 28 0d 0a DbTypeMapping(..
eb50: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e string n
eb60: 65 77 54 79 70 65 4e 61 6d 65 2c 0d 0a 20 20 20 ewTypeName,..
eb70: 20 20 20 20 20 44 62 54 79 70 65 20 6e 65 77 44 DbType newD
eb80: 61 74 61 54 79 70 65 2c 0d 0a 20 20 20 20 20 20 ataType,..
eb90: 20 20 62 6f 6f 6c 20 6e 65 77 50 72 69 6d 61 72 bool newPrimar
eba0: 79 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 y.. )..
ebb0: 20 20 7b 0d 0a 20 20 20 20 20 20 74 79 70 65 4e {.. typeN
ebc0: 61 6d 65 20 3d 20 6e 65 77 54 79 70 65 4e 61 6d ame = newTypeNam
ebd0: 65 3b 0d 0a 20 20 20 20 20 20 64 61 74 61 54 79 e;.. dataTy
ebe0: 70 65 20 3d 20 6e 65 77 44 61 74 61 54 79 70 65 pe = newDataType
ebf0: 3b 0d 0a 20 20 20 20 20 20 70 72 69 6d 61 72 79 ;.. primary
ec00: 20 3d 20 6e 65 77 50 72 69 6d 61 72 79 3b 0d 0a = newPrimary;..
ec10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 69 6e 74 }.... int
ec20: 65 72 6e 61 6c 20 73 74 72 69 6e 67 20 74 79 70 ernal string typ
ec30: 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 69 6e 74 65 eName;.. inte
ec40: 72 6e 61 6c 20 44 62 54 79 70 65 20 64 61 74 61 rnal DbType data
ec50: 54 79 70 65 3b 0d 0a 20 20 20 20 69 6e 74 65 72 Type;.. inter
ec60: 6e 61 6c 20 62 6f 6f 6c 20 70 72 69 6d 61 72 79 nal bool primary
ec70: 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 6e 74 65 ;.. }.... inte
ec80: 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 rnal sealed clas
ec90: 73 20 54 79 70 65 4e 61 6d 65 53 74 72 69 6e 67 s TypeNameString
eca0: 43 6f 6d 70 61 72 65 72 20 3a 20 49 45 71 75 61 Comparer : IEqua
ecb0: 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 73 74 72 lityComparer<str
ecc0: 69 6e 67 3e 0d 0a 20 20 7b 0d 0a 20 20 20 20 23 ing>.. {.. #
ecd0: 72 65 67 69 6f 6e 20 49 45 71 75 61 6c 69 74 79 region IEquality
ece0: 43 6f 6d 70 61 72 65 72 3c 73 74 72 69 6e 67 3e Comparer<string>
ecf0: 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 70 75 Members.. pu
ed00: 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73 blic bool Equals
ed10: 28 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 (.. string
ed20: 6c 65 66 74 2c 0d 0a 20 20 20 20 20 20 73 74 72 left,.. str
ed30: 69 6e 67 20 72 69 67 68 74 0d 0a 20 20 20 20 20 ing right..
ed40: 20 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 ).. {..
ed50: 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 return String.E
ed60: 71 75 61 6c 73 28 6c 65 66 74 2c 20 72 69 67 68 quals(left, righ
ed70: 74 2c 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 t, StringCompari
ed80: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 son.OrdinalIgnor
ed90: 65 43 61 73 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a eCase);.. }..
eda0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f .. //////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
edc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
edf0: 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 /.... public
ee00: 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 int GetHashCode(
ee10: 0d 0a 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 .. string v
ee20: 61 6c 75 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20 alue.. )..
ee30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 2f 2f 0d 0a {.. //..
ee40: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 // NOTE: T
ee50: 68 65 20 6f 6e 6c 79 20 74 68 69 6e 67 20 74 68 he only thing th
ee60: 61 74 20 77 65 20 6d 75 73 74 20 67 75 61 72 61 at we must guara
ee70: 6e 74 65 65 20 68 65 72 65 2c 20 61 63 63 6f 72 ntee here, accor
ee80: 64 69 6e 67 0d 0a 20 20 20 20 20 20 2f 2f 20 20 ding.. //
ee90: 20 20 20 20 20 74 6f 20 74 68 65 20 4d 53 44 4e to the MSDN
eea0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 documentation f
eeb0: 6f 72 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 or IEqualityComp
eec0: 61 72 65 72 2c 20 69 73 0d 0a 20 20 20 20 20 20 arer, is..
eed0: 2f 2f 20 20 20 20 20 20 20 74 68 61 74 20 66 6f // that fo
eee0: 72 20 74 77 6f 20 67 69 76 65 6e 20 73 74 72 69 r two given stri
eef0: 6e 67 73 2c 20 69 66 20 45 71 75 61 6c 73 20 72 ngs, if Equals r
ef00: 65 74 75 72 6e 20 74 72 75 65 20 74 68 65 6e 0d eturn true then.
ef10: 0a 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 . //
ef20: 74 68 65 20 74 77 6f 20 73 74 72 69 6e 67 73 20 the two strings
ef30: 6d 75 73 74 20 68 61 73 68 20 74 6f 20 74 68 65 must hash to the
ef40: 20 73 61 6d 65 20 76 61 6c 75 65 2e 0d 0a 20 20 same value...
ef50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 69 66 //.. if
ef60: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 (value != null)
ef70: 0d 0a 23 69 66 20 21 50 4c 41 54 46 4f 52 4d 5f ..#if !PLATFORM_
ef80: 43 4f 4d 50 41 43 54 46 52 41 4d 45 57 4f 52 4b COMPACTFRAMEWORK
ef90: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e .. return
efa0: 20 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 49 6e value.ToLowerIn
efb0: 76 61 72 69 61 6e 74 28 29 2e 47 65 74 48 61 73 variant().GetHas
efc0: 68 43 6f 64 65 28 29 3b 0d 0a 23 65 6c 73 65 0d hCode();..#else.
efd0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return
efe0: 76 61 6c 75 65 2e 54 6f 4c 6f 77 65 72 28 29 2e value.ToLower().
eff0: 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a GetHashCode();..
f000: 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20 65 6c #endif.. el
f010: 73 65 0d 0a 20 20 20 20 20 20 20 20 74 68 72 6f se.. thro
f020: 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75 w new ArgumentNu
f030: 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 76 61 6c llException("val
f040: 75 65 22 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 ue");.. }..
f050: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 #endregion..
f060: 7d 0d 0a 7d 0d 0a }..}..