带有COUNT的SELECT语句始终返回0

时间:2011-12-04 19:57:08

标签: c# sql sql-server sql-server-2008

不知道为什么我不能回复这里只有少量评论文字的人,但是我的修改后的代码超过了这个,所以我发布了新的。

此Web服务始终返回0.如果我在SSMS中运行它返回3 ...不确定原因,有什么想法吗?

string ConnString = "Removed";
String query = "DECLARE @userSID varchar(255) SELECT COUNT(AD_SID) As ReturnCount FROM AD_Authorization WHERE AD_SID = @userSID ";

using (OleDbConnection conn = new OleDbConnection(ConnString))
{
   using (OleDbCommand cmd = new OleDbCommand(query, conn))
   {
      cmd.Parameters.AddWithValue("userSID", SpartaCrypto.SpartaEncryptAES(userSID.ToString(), "s3cret!"));
      conn.Open();
      int returnCount = (Int32)cmd.ExecuteScalar();
      conn.Close();

      if (returnCount > 1) 
      {
         return 1;
      }
      else
      {
         return 0;
      }
   }
}

1 个答案:

答案 0 :(得分:3)

您的查询不是一个好的OLEDB参数化查询。

请改为尝试:

"SELECT COUNT(AD_SID) As ReturnCount FROM AD_Authorization WHERE AD_SID = @userSID";

此外,参数名称应匹配:

cmd.Parameters.AddWithValue("@userSID", SpartaCrypto.SpartaEncryptAES(userSID.ToString(), "s3cret!"));