2011-11-12 259 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