Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SqlConvert.cs
Go to the documentation of this file.
4using System.Xml;
5
6namespace System.Data.Common;
7
8internal static class SqlConvert
9{
10 public static SqlByte ConvertToSqlByte(object value)
11 {
12 if (value == DBNull.Value)
13 {
14 return SqlByte.Null;
15 }
17 return DataStorage.GetStorageType(type) switch
18 {
20 StorageType.Byte => (byte)value,
22 };
23 }
24
25 public static SqlInt16 ConvertToSqlInt16(object value)
26 {
27 if (value == DBNull.Value)
28 {
29 return SqlInt16.Null;
30 }
32 return DataStorage.GetStorageType(type) switch
33 {
34 StorageType.Byte => (byte)value,
35 StorageType.Int16 => (short)value,
37 StorageType.SqlInt16 => (SqlInt16)value,
39 };
40 }
41
42 public static SqlInt32 ConvertToSqlInt32(object value)
43 {
44 if (value == DBNull.Value)
45 {
46 return SqlInt32.Null;
47 }
49 return DataStorage.GetStorageType(type) switch
50 {
52 StorageType.Int32 => (int)value,
54 StorageType.Int16 => (short)value,
55 StorageType.UInt16 => (ushort)value,
56 StorageType.SqlByte => (SqlByte)value,
57 StorageType.Byte => (byte)value,
59 };
60 }
61
62 public static SqlInt64 ConvertToSqlInt64(object value)
63 {
64 if (value == DBNull.Value)
65 {
66 return SqlInt32.Null;
67 }
69 return DataStorage.GetStorageType(type) switch
70 {
72 StorageType.Int64 => (long)value,
74 StorageType.Int16 => (short)value,
75 StorageType.UInt16 => (ushort)value,
76 StorageType.SqlInt32 => (SqlInt32)value,
77 StorageType.Int32 => (int)value,
78 StorageType.UInt32 => (uint)value,
80 StorageType.Byte => (byte)value,
82 };
83 }
84
85 public static SqlDouble ConvertToSqlDouble(object value)
86 {
87 if (value == DBNull.Value)
88 {
89 return SqlDouble.Null;
90 }
92 return DataStorage.GetStorageType(type) switch
93 {
95 StorageType.Double => (double)value,
97 StorageType.Int64 => (long)value,
98 StorageType.UInt64 => (ulong)value,
99 StorageType.SqlInt16 => (SqlInt16)value,
101 StorageType.UInt16 => (int)(ushort)value,
102 StorageType.SqlInt32 => (SqlInt32)value,
103 StorageType.Int32 => (int)value,
104 StorageType.UInt32 => (uint)value,
106 StorageType.Byte => (int)(byte)value,
107 StorageType.SqlSingle => (SqlSingle)value,
108 StorageType.Single => (float)value,
109 StorageType.SqlMoney => (SqlMoney)value,
112 };
113 }
114
116 {
117 if (value == DBNull.Value)
118 {
119 return SqlDecimal.Null;
120 }
122 return DataStorage.GetStorageType(type) switch
123 {
125 StorageType.Decimal => (decimal)value,
127 StorageType.Int64 => (long)value,
128 StorageType.UInt64 => (ulong)value,
129 StorageType.SqlInt16 => (SqlInt16)value,
131 StorageType.UInt16 => (ushort)value,
133 StorageType.Int32 => (int)value,
134 StorageType.UInt32 => (uint)value,
135 StorageType.SqlByte => (SqlByte)value,
136 StorageType.Byte => (byte)value,
137 StorageType.SqlMoney => (SqlMoney)value,
139 };
140 }
141
142 public static SqlSingle ConvertToSqlSingle(object value)
143 {
144 if (value == DBNull.Value)
145 {
146 return SqlSingle.Null;
147 }
149 return DataStorage.GetStorageType(type) switch
150 {
152 StorageType.Single => (float)value,
154 StorageType.Int64 => (long)value,
155 StorageType.UInt64 => (ulong)value,
156 StorageType.SqlInt16 => (SqlInt16)value,
158 StorageType.UInt16 => (int)(ushort)value,
159 StorageType.SqlInt32 => (SqlInt32)value,
160 StorageType.Int32 => (int)value,
161 StorageType.UInt32 => (uint)value,
163 StorageType.Byte => (int)(byte)value,
164 StorageType.SqlMoney => (SqlMoney)value,
167 };
168 }
169
170 public static SqlMoney ConvertToSqlMoney(object value)
171 {
172 if (value == DBNull.Value)
173 {
174 return SqlMoney.Null;
175 }
177 return DataStorage.GetStorageType(type) switch
178 {
180 StorageType.Decimal => (decimal)value,
182 StorageType.Int64 => (long)value,
183 StorageType.UInt64 => (ulong)value,
184 StorageType.SqlInt16 => (SqlInt16)value,
186 StorageType.UInt16 => (ushort)value,
188 StorageType.Int32 => (int)value,
189 StorageType.UInt32 => (uint)value,
190 StorageType.SqlByte => (SqlByte)value,
191 StorageType.Byte => (byte)value,
193 };
194 }
195
197 {
198 if (value == DBNull.Value)
199 {
200 return SqlDateTime.Null;
201 }
203 return DataStorage.GetStorageType(type) switch
204 {
206 StorageType.DateTime => (DateTime)value,
208 };
209 }
210
212 {
213 if (value == DBNull.Value || value == null)
214 {
215 return SqlBoolean.Null;
216 }
218 return DataStorage.GetStorageType(type) switch
219 {
221 StorageType.Boolean => (bool)value,
223 };
224 }
225
226 public static SqlGuid ConvertToSqlGuid(object value)
227 {
228 if (value == DBNull.Value)
229 {
230 return SqlGuid.Null;
231 }
233 return DataStorage.GetStorageType(type) switch
234 {
236 StorageType.Guid => (Guid)value,
238 };
239 }
240
241 public static SqlBinary ConvertToSqlBinary(object value)
242 {
243 if (value == DBNull.Value)
244 {
245 return SqlBinary.Null;
246 }
248 return DataStorage.GetStorageType(type) switch
249 {
251 StorageType.ByteArray => (byte[])value,
253 };
254 }
255
256 public static SqlString ConvertToSqlString(object value)
257 {
258 if (value == DBNull.Value || value == null)
259 {
260 return SqlString.Null;
261 }
263 return DataStorage.GetStorageType(type) switch
264 {
266 StorageType.String => (string)value,
268 };
269 }
270
271 public static SqlChars ConvertToSqlChars(object value)
272 {
273 if (value == DBNull.Value)
274 {
275 return SqlChars.Null;
276 }
279 if (storageType == StorageType.SqlChars)
280 {
281 return (SqlChars)value;
282 }
284 }
285
286 public static SqlBytes ConvertToSqlBytes(object value)
287 {
288 if (value == DBNull.Value)
289 {
290 return SqlBytes.Null;
291 }
294 if (storageType == StorageType.SqlBytes)
295 {
296 return (SqlBytes)value;
297 }
299 }
300
305
322
324 {
325 switch (stype)
326 {
327 case StorageType.SqlBinary:
329 case StorageType.SqlBoolean:
331 case StorageType.SqlByte:
332 return ConvertToSqlByte(value);
333 case StorageType.SqlBytes:
334 return ConvertToSqlBytes(value);
335 case StorageType.SqlChars:
336 return ConvertToSqlChars(value);
337 case StorageType.SqlDateTime:
339 case StorageType.SqlDecimal:
341 case StorageType.SqlDouble:
343 case StorageType.SqlGuid:
344 return ConvertToSqlGuid(value);
345 case StorageType.SqlInt16:
346 return ConvertToSqlInt16(value);
347 case StorageType.SqlInt32:
348 return ConvertToSqlInt32(value);
349 case StorageType.SqlInt64:
350 return ConvertToSqlInt64(value);
351 case StorageType.SqlMoney:
352 return ConvertToSqlMoney(value);
353 case StorageType.SqlSingle:
355 case StorageType.SqlString:
357 default:
358 {
359 if (DBNull.Value == value || value == null)
360 {
361 return DBNull.Value;
362 }
365 if ((uint)(storageType - 26) <= 14u)
366 {
368 }
369 if (StorageType.String == stype)
370 {
371 switch (storageType)
372 {
373 case StorageType.Boolean:
374 return ((IConvertible)(bool)value).ToString(formatProvider);
375 case StorageType.Char:
376 return ((IConvertible)(char)value).ToString(formatProvider);
377 case StorageType.SByte:
378 return ((sbyte)value).ToString(formatProvider);
379 case StorageType.Byte:
380 return ((byte)value).ToString(formatProvider);
381 case StorageType.Int16:
382 return ((short)value).ToString(formatProvider);
383 case StorageType.UInt16:
384 return ((ushort)value).ToString(formatProvider);
385 case StorageType.Int32:
386 return ((int)value).ToString(formatProvider);
387 case StorageType.UInt32:
388 return ((uint)value).ToString(formatProvider);
389 case StorageType.Int64:
390 return ((long)value).ToString(formatProvider);
391 case StorageType.UInt64:
392 return ((ulong)value).ToString(formatProvider);
393 case StorageType.Single:
394 return ((float)value).ToString(formatProvider);
395 case StorageType.Double:
396 return ((double)value).ToString(formatProvider);
397 case StorageType.Decimal:
398 return ((decimal)value).ToString(formatProvider);
399 case StorageType.DateTime:
400 return ((DateTime)value).ToString(formatProvider);
401 case StorageType.TimeSpan:
403 case StorageType.Guid:
404 return XmlConvert.ToString((Guid)value);
405 case StorageType.String:
406 return (string)value;
407 case StorageType.CharArray:
408 return new string((char[])value);
409 case StorageType.DateTimeOffset:
410 return ((DateTimeOffset)value).ToString(formatProvider);
411 default:
413 {
414 return convertible.ToString(formatProvider);
415 }
417 {
418 return formattable.ToString(null, formatProvider);
419 }
420 return value.ToString();
421 case StorageType.BigInteger:
422 break;
423 }
424 }
425 else
426 {
427 if (StorageType.TimeSpan == stype)
428 {
429 return storageType switch
430 {
432 StorageType.Int32 => new TimeSpan((int)value),
433 StorageType.Int64 => new TimeSpan((long)value),
434 _ => (TimeSpan)value,
435 };
436 }
437 if (StorageType.DateTimeOffset == stype)
438 {
439 return (DateTimeOffset)value;
440 }
441 if (StorageType.String == storageType)
442 {
443 switch (stype)
444 {
445 case StorageType.String:
446 return (string)value;
447 case StorageType.Boolean:
448 if ("1" == (string)value)
449 {
450 return true;
451 }
452 if ("0" == (string)value)
453 {
454 return false;
455 }
456 break;
457 case StorageType.Char:
458 return ((IConvertible)(string)value).ToChar(formatProvider);
459 case StorageType.SByte:
460 return ((IConvertible)(string)value).ToSByte(formatProvider);
461 case StorageType.Byte:
462 return ((IConvertible)(string)value).ToByte(formatProvider);
463 case StorageType.Int16:
464 return ((IConvertible)(string)value).ToInt16(formatProvider);
465 case StorageType.UInt16:
466 return ((IConvertible)(string)value).ToUInt16(formatProvider);
467 case StorageType.Int32:
468 return ((IConvertible)(string)value).ToInt32(formatProvider);
469 case StorageType.UInt32:
470 return ((IConvertible)(string)value).ToUInt32(formatProvider);
471 case StorageType.Int64:
472 return ((IConvertible)(string)value).ToInt64(formatProvider);
473 case StorageType.UInt64:
474 return ((IConvertible)(string)value).ToUInt64(formatProvider);
475 case StorageType.Single:
476 return ((IConvertible)(string)value).ToSingle(formatProvider);
477 case StorageType.Double:
478 return ((IConvertible)(string)value).ToDouble(formatProvider);
479 case StorageType.Decimal:
480 return ((IConvertible)(string)value).ToDecimal(formatProvider);
481 case StorageType.DateTime:
482 return ((IConvertible)(string)value).ToDateTime(formatProvider);
483 case StorageType.TimeSpan:
484 return XmlConvert.ToTimeSpan((string)value);
485 case StorageType.Guid:
486 return XmlConvert.ToGuid((string)value);
487 case StorageType.Uri:
488 return new Uri((string)value);
489 }
490 }
491 }
493 }
494 }
495 }
496
497 public static object ChangeTypeForXML(object value, Type type)
498 {
502 switch (storageType)
503 {
504 case StorageType.SqlBinary:
505 return new SqlBinary(Convert.FromBase64String((string)value));
506 case StorageType.SqlBoolean:
507 return new SqlBoolean(XmlConvert.ToBoolean((string)value));
508 case StorageType.SqlByte:
509 return new SqlByte(XmlConvert.ToByte((string)value));
510 case StorageType.SqlBytes:
511 return new SqlBytes(Convert.FromBase64String((string)value));
512 case StorageType.SqlChars:
513 return new SqlChars(((string)value).ToCharArray());
514 case StorageType.SqlDateTime:
515 return new SqlDateTime(XmlConvert.ToDateTime((string)value, XmlDateTimeSerializationMode.RoundtripKind));
516 case StorageType.SqlDecimal:
517 return SqlDecimal.Parse((string)value);
518 case StorageType.SqlDouble:
519 return new SqlDouble(XmlConvert.ToDouble((string)value));
520 case StorageType.SqlGuid:
521 return new SqlGuid(XmlConvert.ToGuid((string)value));
522 case StorageType.SqlInt16:
523 return new SqlInt16(XmlConvert.ToInt16((string)value));
524 case StorageType.SqlInt32:
525 return new SqlInt32(XmlConvert.ToInt32((string)value));
526 case StorageType.SqlInt64:
527 return new SqlInt64(XmlConvert.ToInt64((string)value));
528 case StorageType.SqlMoney:
529 return new SqlMoney(XmlConvert.ToDecimal((string)value));
530 case StorageType.SqlSingle:
531 return new SqlSingle(XmlConvert.ToSingle((string)value));
532 case StorageType.SqlString:
533 return new SqlString((string)value);
534 case StorageType.Boolean:
535 if ("1" == (string)value)
536 {
537 return true;
538 }
539 if ("0" == (string)value)
540 {
541 return false;
542 }
543 return XmlConvert.ToBoolean((string)value);
544 case StorageType.Char:
545 return XmlConvert.ToChar((string)value);
546 case StorageType.SByte:
547 return XmlConvert.ToSByte((string)value);
548 case StorageType.Byte:
549 return XmlConvert.ToByte((string)value);
550 case StorageType.Int16:
551 return XmlConvert.ToInt16((string)value);
552 case StorageType.UInt16:
553 return XmlConvert.ToUInt16((string)value);
554 case StorageType.Int32:
555 return XmlConvert.ToInt32((string)value);
556 case StorageType.UInt32:
557 return XmlConvert.ToUInt32((string)value);
558 case StorageType.Int64:
559 return XmlConvert.ToInt64((string)value);
560 case StorageType.UInt64:
561 return XmlConvert.ToUInt64((string)value);
562 case StorageType.Single:
563 return XmlConvert.ToSingle((string)value);
564 case StorageType.Double:
565 return XmlConvert.ToDouble((string)value);
566 case StorageType.Decimal:
567 return XmlConvert.ToDecimal((string)value);
568 case StorageType.DateTime:
569 return XmlConvert.ToDateTime((string)value, XmlDateTimeSerializationMode.RoundtripKind);
570 case StorageType.Guid:
571 return XmlConvert.ToGuid((string)value);
572 case StorageType.Uri:
573 return new Uri((string)value);
574 case StorageType.DateTimeOffset:
575 return XmlConvert.ToDateTimeOffset((string)value);
576 case StorageType.TimeSpan:
577 return storageType2 switch
578 {
580 StorageType.Int32 => new TimeSpan((int)value),
581 StorageType.Int64 => new TimeSpan((long)value),
582 _ => (TimeSpan)value,
583 };
584 default:
585 if (DBNull.Value == value || value == null)
586 {
587 return DBNull.Value;
588 }
589 switch (storageType2)
590 {
591 case StorageType.SqlBinary:
592 return Convert.ToBase64String(((SqlBinary)value).Value);
593 case StorageType.SqlBoolean:
594 return XmlConvert.ToString(((SqlBoolean)value).Value);
595 case StorageType.SqlByte:
596 return XmlConvert.ToString(((SqlByte)value).Value);
597 case StorageType.SqlBytes:
598 return Convert.ToBase64String(((SqlBytes)value).Value);
599 case StorageType.SqlChars:
600 return new string(((SqlChars)value).Value);
601 case StorageType.SqlDateTime:
602 return XmlConvert.ToString(((SqlDateTime)value).Value, XmlDateTimeSerializationMode.RoundtripKind);
603 case StorageType.SqlDecimal:
604 return ((SqlDecimal)value).ToString();
605 case StorageType.SqlDouble:
606 return XmlConvert.ToString(((SqlDouble)value).Value);
607 case StorageType.SqlGuid:
608 return XmlConvert.ToString(((SqlGuid)value).Value);
609 case StorageType.SqlInt16:
610 return XmlConvert.ToString(((SqlInt16)value).Value);
611 case StorageType.SqlInt32:
612 return XmlConvert.ToString(((SqlInt32)value).Value);
613 case StorageType.SqlInt64:
614 return XmlConvert.ToString(((SqlInt64)value).Value);
615 case StorageType.SqlMoney:
616 return XmlConvert.ToString(((SqlMoney)value).Value);
617 case StorageType.SqlSingle:
618 return XmlConvert.ToString(((SqlSingle)value).Value);
619 case StorageType.SqlString:
620 return ((SqlString)value).Value;
621 case StorageType.Boolean:
622 return XmlConvert.ToString((bool)value);
623 case StorageType.Char:
624 return XmlConvert.ToString((char)value);
625 case StorageType.SByte:
626 return XmlConvert.ToString((sbyte)value);
627 case StorageType.Byte:
628 return XmlConvert.ToString((byte)value);
629 case StorageType.Int16:
630 return XmlConvert.ToString((short)value);
631 case StorageType.UInt16:
632 return XmlConvert.ToString((ushort)value);
633 case StorageType.Int32:
634 return XmlConvert.ToString((int)value);
635 case StorageType.UInt32:
636 return XmlConvert.ToString((uint)value);
637 case StorageType.Int64:
638 return XmlConvert.ToString((long)value);
639 case StorageType.UInt64:
640 return XmlConvert.ToString((ulong)value);
641 case StorageType.Single:
642 return XmlConvert.ToString((float)value);
643 case StorageType.Double:
644 return XmlConvert.ToString((double)value);
645 case StorageType.Decimal:
646 return XmlConvert.ToString((decimal)value);
647 case StorageType.DateTime:
649 case StorageType.TimeSpan:
651 case StorageType.Guid:
652 return XmlConvert.ToString((Guid)value);
653 case StorageType.String:
654 return (string)value;
655 case StorageType.CharArray:
656 return new string((char[])value);
657 case StorageType.DateTimeOffset:
659 default:
661 {
663 }
665 {
666 return formattable.ToString(null, CultureInfo.InvariantCulture);
667 }
668 return value.ToString();
669 }
670 }
671 }
672}
static ? object ChangeType(object? value, TypeCode typeCode)
Definition Convert.cs:229
static string ToBase64String(byte[] inArray)
Definition Convert.cs:2675
static unsafe byte[] FromBase64String(string s)
Definition Convert.cs:2904
static readonly DBNull Value
Definition DBNull.cs:8
static object ConvertFromBigInteger(BigInteger value, Type type, IFormatProvider formatProvider)
static BigInteger ConvertToBigInteger(object value, IFormatProvider formatProvider)
static StorageType GetStorageType(Type dataType)
static object ChangeTypeForXML(object value, Type type)
static SqlBoolean ConvertToSqlBoolean(object value)
static object ChangeTypeForDefaultValue(object value, Type type, IFormatProvider formatProvider)
static SqlBinary ConvertToSqlBinary(object value)
static SqlChars ConvertToSqlChars(object value)
static SqlDouble ConvertToSqlDouble(object value)
Definition SqlConvert.cs:85
static SqlDecimal ConvertToSqlDecimal(object value)
static DateTimeOffset ConvertStringToDateTimeOffset(string value, IFormatProvider formatProvider)
static SqlString ConvertToSqlString(object value)
static SqlBytes ConvertToSqlBytes(object value)
static SqlMoney ConvertToSqlMoney(object value)
static SqlInt32 ConvertToSqlInt32(object value)
Definition SqlConvert.cs:42
static SqlByte ConvertToSqlByte(object value)
Definition SqlConvert.cs:10
static object ChangeType2(object value, StorageType stype, Type type, IFormatProvider formatProvider)
static SqlInt16 ConvertToSqlInt16(object value)
Definition SqlConvert.cs:25
static SqlDateTime ConvertToSqlDateTime(object value)
static SqlInt64 ConvertToSqlInt64(object value)
Definition SqlConvert.cs:62
static SqlGuid ConvertToSqlGuid(object value)
static SqlSingle ConvertToSqlSingle(object value)
static Exception ConvertFailed(Type type1, Type type2)
static CultureInfo InvariantCulture
static ? Type GetType(string typeName, bool throwOnError, bool ignoreCase)
Definition Type.cs:408
static bool ToBoolean(string s)
static DateTimeOffset ToDateTimeOffset(string s)
static uint ToUInt32(string s)
static int ToInt32(string s)
static short ToInt16(string s)
static string ToString(bool value)
static float ToSingle(string s)
static TimeSpan ToTimeSpan(string s)
static char ToChar(string s)
static double ToDouble(string s)
static sbyte ToSByte(string s)
static Guid ToGuid(string s)
static DateTime ToDateTime(string s)
static decimal ToDecimal(string s)
static ulong ToUInt64(string s)
static ushort ToUInt16(string s)
static byte ToByte(string s)
static long ToInt64(string s)
static readonly SqlBinary Null
Definition SqlBinary.cs:14
static readonly SqlBoolean Null
Definition SqlBoolean.cs:21
static readonly SqlByte Null
Definition SqlByte.cs:19
static readonly SqlDateTime Null
static SqlDecimal Parse(string s)
static readonly SqlDecimal Null
Definition SqlDecimal.cs:66
static readonly SqlDouble Null
Definition SqlDouble.cs:20
static readonly SqlGuid Null
Definition SqlGuid.cs:23
static readonly SqlInt16 Null
Definition SqlInt16.cs:19
static readonly SqlInt32 Null
Definition SqlInt32.cs:19
static readonly SqlMoney Null
Definition SqlMoney.cs:17
static readonly SqlSingle Null
Definition SqlSingle.cs:17
static readonly SqlString Null
Definition SqlString.cs:27
static DateTimeOffset Parse(string input)