首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBNull if语句

DBNull if语句
EN

Stack Overflow用户
提问于 2012-05-03 20:55:02
回答 11查看 175.1K关注 0票数 76

我正在尝试执行一个存储过程,然后使用if语句检查null值,但我遇到了问题。我是一个VB的家伙,所以如果我犯了一个学生语法错误,请容忍我。

代码语言:javascript
复制
objConn = new SqlConnection(strConnection);
objConn.Open();
objCmd = new SqlCommand(strSQL, objConn);
rsData = objCmd.ExecuteReader();
rsData.Read();

if (!(rsData["usr.ursrdaystime"].Equals(System.DBNull.Value)))
        {
            strLevel = rsData["usr.ursrdaystime"].ToString();

        }

这是否允许我检查SQL连接是否只返回一个值,如果是,则填充我的字符串?

我习惯于只检查下面的代码来查看是否返回了一个值,并且不确定我是否正确地使用了C#

如果不是IsDBNull(rsData("usr.ursrdaystime"))

任何帮助都将不胜感激!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-05-03 20:57:49

这应该是可行的。

代码语言:javascript
复制
if (rsData["usr.ursrdaystime"] != System.DBNull.Value))
{
    strLevel = rsData["usr.ursrdaystime"].ToString();
}

还需要添加using语句,如下所示:

代码语言:javascript
复制
using (var objConn = new SqlConnection(strConnection))
     {
        objConn.Open();
        using (var objCmd = new SqlCommand(strSQL, objConn))
        {
           using (var rsData = objCmd.ExecuteReader())
           {
              while (rsData.Read())
              {
                 if (rsData["usr.ursrdaystime"] != System.DBNull.Value)
                 {
                    strLevel = rsData["usr.ursrdaystime"].ToString();
                 }
              }
           }
        }
     }

这将自动释放(关闭)块{ ..}。

票数 134
EN

Stack Overflow用户

发布于 2012-05-03 20:58:02

习惯用法是这样说的:

代码语言:javascript
复制
if(rsData["usr.ursrdaystime"] != DBNull.Value) {
    strLevel = rsData["usr.ursrdaystime"].ToString();
}

这一点:

代码语言:javascript
复制
rsData = objCmd.ExecuteReader();
rsData.Read();

使其看起来就像是在读取一个值。请改用IDbCommand.ExecuteScalar

票数 13
EN

Stack Overflow用户

发布于 2012-05-03 21:03:17

与VB最接近的等价物是(see this):

代码语言:javascript
复制
Convert.IsDBNull()

但是有许多方法可以做到这一点,而且大多数都是链接的from here

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10431835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档