处理来自DB的空值

use*_*510 2 .net c#

我正在查询的db返回一些空值.如何防止这种情况并确保调用者获取一些数据.

我的代码是:

使用DataReader

        while (dr.Read())
        {
            vo = new PlacementVO();
            vo.PlacementID = dr.GetString(0);
Run Code Online (Sandbox Code Playgroud)

如果我使用数据集,我可以这样做.

 obj.email = (row["email"] == DBNull.Value) ? String.Empty : Convert.ToString(row["email"]);
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*ell 5

还有IsDBNull(int ordinal),如果你正在使用的序号(你是).

所以:

string email = reader.IsDBNull(0) ? null : reader.GetString(0);
Run Code Online (Sandbox Code Playgroud)

如果您正在使用字符串列名称,那么要使用它,您必须先调用GetOrdinal,例如:

string GetSafeString(this IDataReader reader, string name)
{
    int index = reader.GetOrdinal(name);
    return reader.IsDBNull(0) ? null : reader.GetString(0);
}
Run Code Online (Sandbox Code Playgroud)

当然,只查看一次序数更快,而不是每行一次.

类似的方法可以用于int?等,或使用默认值而不是null.