2011-11-12 178 views
5

我写了这个SQL查询:如果条件与空结果查询

SqlCommand cmd2 = new SqlCommand(); 
     cmd2.Connection = new SqlConnection(Class1.CnnStr); 
     cmd2.CommandText = "SELECT MAX(Code) FROM Table WHERE [email protected] "; 
     cmd2.Connection.Open(); 
     cmd2.Parameters.AddWithValue("@Number", Hidden_txt.Text); 
     cmd2.ExecuteNonQuery(); 

,我想补充一些if条件,如:

if (cmd2.ExecuteScalar()=="Null") 
{....} 

我怎么能如果条件添加当我的查询没有答案?

回答

8

删除调用cmd2.ExecuteNonQuery,再加入这样的事情:

object maxCode = cmd2.ExecuteScalar(); 
if (maxCode == null) 
{ 
    // Null 
} 
else 
{ 
    // do something with maxCode, you probably want to cast - e.g. (int)maxCode 
} 
3

您可以使用这样的读者:

这假定代码的类型是整数,从而改变必要

SqlDataReader reader = cmd2.ExecuteReader; 
int code = 0; 
if (reader.Read) { 
    //whatever if it has a result 
    code = reader.GetInt32(0); 
} else { 
    //Whatever if it finds nothing 
} 
2

根据MSDN

如果未找到结果集中第一行的第一列,则返回空引用(在Visual Basic中为Nothing)。如果数据库中的值为空,则查询返回DBNull.Value。

所以,你可以这样写:

if (cmd2.ExecuteScalar() == null) 
{....} 

或者,你可以使用ExecuteReader,然后检查是否返回读者HasRows