我是C#的新手。我正在使用System.Data.SqlClient类从数据库表中执行一些选择查询。我在执行一些选择查询时得到了sqlnullvalueexception。在谷歌搜索时,我知道如果数据库中的值为null,则SqlDataReader.GetString(或其变体)将抛出sqlnullvalueexception。
最佳的编码实践是什么?

if (!sqlDataReader.IsDBNull(n)) value = r.GetString(n);

还有更好的编码方式吗?

最佳答案

如果您不想重复很多,只需创建一个辅助函数,如下所示:

public static class DataReaderExtensions
{
    public static string GetStringOrNull(this IDataReader reader, int ordinal)
    {
        return reader.IsDBNull(ordinal) ? null : reader.GetString(ordinal);
    }

    public static string GetStringOrNull(this IDataReader reader, string columnName)
    {
        return reader.GetStringOrNull(reader.GetOrdinal(columnName));
    }
}

您可以这样称呼:
value = reader.GetStringOrNull(n);

10-06 13:28