Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查datareader中的记录是否为空_C#_Asp.net 3.5 - Fatal编程技术网

C# 检查datareader中的记录是否为空

C# 检查datareader中的记录是否为空,c#,asp.net-3.5,C#,Asp.net 3.5,我已经浏览了S/O上的其他帖子,但我找不到适合我的解决方案 我有一个可能返回空值的datareader,如果是这样,我希望值等于空 txtMiddleName.Text = rdrGetUserInfo.GetString(1) ?? ""; 上面的字符串不起作用。 当我遍历代码时,代码跳转到错误捕获块 有什么想法吗?这是因为rdrGetUserInfo返回了DBNull,这是一个类 在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!: if (!rdrGetUserInfo

我已经浏览了S/O上的其他帖子,但我找不到适合我的解决方案

我有一个可能返回空值的datareader,如果是这样,我希望值等于空

txtMiddleName.Text = rdrGetUserInfo.GetString(1) ?? "";
上面的字符串不起作用。 当我遍历代码时,代码跳转到错误捕获块


有什么想法吗?

这是因为rdrGetUserInfo返回了DBNull,这是一个类

在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!:

if (!rdrGetUserInfo.IsDBNull("someField"))
 txtMiddleName.Text = rdrGetUserInfo.GetString(1);

这是因为rdrGetUserInfo返回DBNull,这是一个类

在获取字符串之前,请检查dbnull,我已经有一段时间没有使用它了!:

if (!rdrGetUserInfo.IsDBNull("someField"))
 txtMiddleName.Text = rdrGetUserInfo.GetString(1);
在调用GetString之前,您应该这样做。

在调用GetString之前,您应该这样做。

试试看

txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? string.Empty : rdrGetUserInfo.GetString(1);
试一试

您可以在DataReader上使用

if (!rdrGetUserInfo.IsDBNull(1))
{
    txtMiddleName.Text = rdrGetUserInfo.GetString(1);
}
您可以在DataReader上使用

if (!rdrGetUserInfo.IsDBNull(1))
{
    txtMiddleName.Text = rdrGetUserInfo.GetString(1);
}
或者,为了缩短时间,您可以这样做:

txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? String.Empty : rdrGetUserInfo.GetString(1);
或者,为了缩短时间,您可以这样做:

txtMiddleName.Text = rdrGetUserInfo.IsDBNull(1) ? String.Empty : rdrGetUserInfo.GetString(1);

IsDbNullint通常比使用GetSqlInt32之类的方法,然后与DBNull.Value或使用自己的.IsNull之类的方法慢得多:

    public static int Int32(this SqlDataReader r, int ord)
    {
        var t = r.GetSqlInt32(ord);
        return t.IsNull ? default(int) : t.Value;
    }
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是所有Sql类型SqlInt32在这里实际上都是结构,而它们都有.Value属性C,但没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容

我怀疑需要一整套Sql类型作为C模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法


如果有人对一两个函数技巧有想法,请说出来:-

IsDbNullint通常比使用GetSqlInt32之类的方法,然后与DBNull.Value进行比较或使用它自己的.IsNull慢得多,比如:

    public static int Int32(this SqlDataReader r, int ord)
    {
        var t = r.GetSqlInt32(ord);
        return t.IsNull ? default(int) : t.Value;
    }
尝试了一些模板解决方案,但到目前为止没有任何效果。问题是所有Sql类型SqlInt32在这里实际上都是结构,而它们都有.Value属性C,但没有真正的模板来处理它。此外,它们还有自己的INullable接口,该接口只有.IsNull,不能与Nyllable兼容

我怀疑需要一整套Sql类型作为C模板,或者向它们添加ICOnvertible,以便只需要一个或两个模板化方法


如果有人有一个或两个功能性技巧的想法,大声说出来:-

是我还是其他人讨厌,请使用String。清空它的清洁器。更多.net。是我还是其他人讨厌它,请使用字符串。清空它的清洁器。More.net@user279521-在调用getstring之前,您需要检查IsDBNull。否则,将抛出一个null异常。请参见下面我的答案:txtmidlename.Text=rdrGetUserInfo.IsDBNull1?String.Empty:rdrGetUserInfo.GetString1@user279521-在调用getstring之前,您需要检查IsDBNull。否则,将抛出一个null异常。请参见下面我的答案:txtmidlename.Text=rdrGetUserInfo.IsDBNull1?String.Empty:rdrGetUserInfo.GetString1;