转换从DB读取的值的方法

本文关键字:方法 读取 DB 转换 | 更新日期: 2023-09-27 18:21:28

我不时发现我的ADO.NET代码崩溃,原因是从数据库读取的值为null,无法转换为其他数据类型。我发现很难找到从数据库转换这些读取值的正确方法。我知道这些进行空检查的方法,但想知道哪种方法更有效?

  1. 我经常在DB中使用isnull()方法(在我的例子中是SQL Server)
  2. 我使用.ToString()将读取的值转换为字符串,然后使用string.IsNullOrWhiteSpace()方法检查它是否为null或以其他方式将其转换为所需的数据类型

转换从DB读取的值的方法

只需使用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>();