2014-12-25 47 views
-1

嗨,我使用下面的代碼來顯示按鈕。如果查詢不返回任何數據

如果查詢結果爲「0」的知名度真WORKING

如果查詢發現,在數據庫中的知名度沒有數據錯誤。 NOT WORKING

string insertSql = "SELECT Status from User_friend WHERE (ProfileId1 = 
       @FriendProfileId) AND (ProfileId = (SELECT ProfileId FROM User_Profile 
       WHERE UserId = @UserId))"; 

     using (SqlConnection myConnection = new SqlConnection(connectionString)) 
     { 


      myConnection.Open(); 
      SqlCommand myCommand = new SqlCommand(insertSql, myConnection); 
      myCommand.Parameters.AddWithValue("@FriendProfileId", 
          Request.QueryString["ProfileId"]); 
      myCommand.Parameters.AddWithValue("@UserId", currentUserId); 
      if (myCommand.ExecuteScalar().ToString() == null) 
      { 
       friendRequestSent.Visible = false; 
       addFriend.Visible = true; 

      } 
      else if (myCommand.ExecuteScalar().ToString() == "0") 
      { 
       friendRequestSent.Visible = true; 
       addFriend.Visible = false; 

      } 
     } 
+2

你得到'NullReferenceException',對不對? –

+1

您正在調用'ExecuteScalar'兩次。存儲一次這個值,然後運行你的邏輯。 –

+0

嗨馬修,謝謝。我是新來的ASP.NET和真正不明白如何存儲值 –

回答

1

對於NULL值,ExecuteScalar將具有值DBNull.Value。您還應該考慮執行查詢一個,將結果保存在一個對象變量中,然後使用它兩次。

object result = myCommand.ExecuteScalar(); 
if (result == DBNull.Value) 
{ 
    friendRequestSent.Visible = false; 
    addFriend.Visible = true; 
} 
else if (Convert.ToString(result) == "0") 
{ 
    friendRequestSent.Visible = true; 
    addFriend.Visible = false; 
} 
+0

謝謝,現在我得到一個錯誤的其他如果(myCommand.ExecuteScalar()。ToString()==「0」) { friendRequestSent.Visible = true; addFriend.Visible = false; } –

+0

我編輯了我的回覆,以包含一次執行查詢的建議。 –

0

拳頭我想知道null是什麼意思。不應該是Null

if (myCommand.ExecuteScalar().ToString() == "Null") 

或者,如果它意味着它不存在,你可以留下空:

if (myCommand.ExecuteScalar().ToString() == "") 
+0

null表示該行在數據庫中不存在 –