Оператор SELECT с COUNT всегда возвращает 0 - PullRequest
1 голос
/ 04 декабря 2011

Не знаю, почему я не могу ответить людям здесь с небольшим количеством текста комментария, но мой пересмотренный код превышает этот, поэтому я публикую новое.

Этот веб-сервис всегда возвращает 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 Ответ

3 голосов
/ 04 декабря 2011

Ваш запрос не является хорошим параметризованным OLEDB-запросом.

Попробуйте вместо этого:

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

Кроме того, имя параметра должно совпадать:

cmd.Parameters.AddWithValue("@userSID", SpartaCrypto.SpartaEncryptAES(userSID.ToString(), "s3cret!"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...