2013-09-24 38 views
0

我只想如果我的存儲過程選擇任何行。存儲過程executeScalar

using (var conn = new System.Data.SqlClient.SqlConnection(
        "Data Source=DANIEL-DATOR;Initial Catalog=EvaluationTest;Integrated Security=True")) 
     using (var command = new SqlCommand("countRecords", conn)) 
     { 
      conn.Open(); 
      command.Parameters.Add(new SqlParameter("@usermail", prop.Sendmail)); 
      command.CommandType = CommandType.StoredProcedure; 

      int userCount = (int)command.ExecuteScalar(); 
      conn.Close(); 


      if (userCount > 0) 
      { 
       return 1; 
      } 

       return 2; 

我從代碼中得到這個錯誤:System.InvalidCastException:指定的轉換無效。 我在做什麼錯?

回答

0

如果結果集爲空,則ExecuteScalar將返回null;請記住,該函數的工作方式是它取得返回數據第一行第一列的值。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

它必須是你的存儲過程並不返回任何東西的情況下;所以你應該檢查結果是否爲空:

var result = command.ExecuteScalar(); 
if (result!=null) 
{ 
    //you got some data 
    Int32.TryParse(result.ToString, out userCount); 
    return user Count>0?1:2; 
}