如果DBNull的声明(DBNull if statement)

2019-06-24 04:11发布

我试图执行一个存储过程,然后使用if语句来检查空值,我的短来了。 我是一个VB家伙,所以请多多包涵,如果我做一个学生语法错误。

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”))

任何帮助,将不胜感激!

Answer 1:

这应该工作。

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

还需要使用语句添加,像波纹管:

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();
                 }
              }
           }
        }
     }

这会全自动处理块{..}之外(关闭)的资源。



Answer 2:

惯用的说法是:

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

这个:

rsData = objCmd.ExecuteReader();
rsData.Read();

使它看起来像你正在阅读一个值。 使用IDbCommand.ExecuteScalar代替。



Answer 3:

最接近相当于你的VB会( 见本 ):

Convert.IsDBNull()

但也有许多方法可以做到这一点,大多数链接从这里



Answer 4:

是的,只是一个语法问题。 试试这个:

if (reader["usr.ursrdaystime"] != DBNull.Value)

.Equals()被检查是否两个Object实例是相同的 。



Answer 5:

考虑:

if(rsData.Read()) {
  int index = rsData.GetOrdinal("columnName"); // I expect, just "ursrdaystime"
  if(rsData.IsDBNull(index)) {
     // is a null
  } else {
     // access the value via any of the rsData.Get*(index) methods
  }
} else {
  // no row returned
}

此外,您也需要更多的using ,P



Answer 6:

if(!rsData.IsDBNull(rsData.GetOrdinal("usr.ursrdaystime")))
{
  strLevel = rsData.GetString("usr.ursrdaystime"); 
}

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.isdbnull.aspx

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getordinal.aspx



Answer 7:

我用String.IsNullorEmpty频繁。 因为当为DBNull设置为的ToString返回空,将工作她。

if(!(String.IsNullorEmpty(rsData["usr.ursrdaystime"].toString())){
        strLevel = rsData["usr.ursrdaystime"].toString();
    }


Answer 8:

三元运营商应该做的很好的位置: 条件? first_expression:second_expression;

strLevel =!Convert.IsDBNull(rsData [ “usr.ursrdaystime”])? Convert.ToString(rsData [ “usr.ursrdaystime”]):空



Answer 9:

在第一次使用的ExecuteScalar

 objConn = new SqlConnection(strConnection);
 objConn.Open();
 objCmd = new SqlCommand(strSQL, objConn);
 object result = cmd.ExecuteScalar();
 if(result == null)
     strLevel = "";
 else 
     strLevel = result.ToString();


文章来源: DBNull if statement
标签: c# dbnull