转换从DB读取的值的方法
本文关键字:方法 读取 DB 转换 | 更新日期: 2023-09-27 18:21:28
我不时发现我的ADO.NET代码崩溃,原因是从数据库读取的值为null,无法转换为其他数据类型。我发现很难找到从数据库转换这些读取值的正确方法。我知道这些进行空检查的方法,但想知道哪种方法更有效?
- 我经常在DB中使用
isnull()
方法(在我的例子中是SQL Server) - 我使用
.ToString()
将读取的值转换为字符串,然后使用string.IsNullOrWhiteSpace()
方法检查它是否为null或以其他方式将其转换为所需的数据类型
只需使用Nullable Types就可以在应用程序中使用这些数据,而无需任何类型转换。
您也可以检查DBNull.Value。或者当您获得值时,使用TryParse对其进行转换。如果它为null,则不会造成任何伤害。
使用新的??操作员:
var foo = dataset.tables[0].foo ?? 0;
您可以考虑编写一些扩展方法来减轻它的痛苦。
首先,你需要一些可以为null的类型,例如:
public static partial class ShortExtensionMethods
{
public static short SafeValue(this short? self)
{
return self == null ? 0 : self.Value;
}
}
对其他基本类型重复此操作。现在,你在问题中提到你想做一些转换。。。另一种通用扩展方法的时间:
public static partial class IConvertibleExtensionMethods
{
public static T To<T>(this IConvertible self)
{
return (T)Convert.ChangeType(self, typeof(T));
} // eo To<T>
} // eo class IConvertibleExtensionMethods
现在,您可以安全地读取可为null的类型:
short? field;
// later
short result = field.SafeValue();
int converted = field.SafeValue().To<int>();