2011-12-04 159 views
1

不知道爲什麼我不能回覆這裏的人只有少量的評論文本,但我的修改後的代碼超過了,所以我發佈新的。SELECT語句和COUNT總是返回0

此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; 
     } 
    } 
} 
+0

一)不應該在測試是'returnCount> = 1'? (可能是帖子中的錯字)。 b)刪除'聲明..'並只保留'選擇'部分。 –

+0

[SQL SELECT with Stored Procedure and Parameters?](http://stackoverflow.com/questions/8377783/sql-select-with-stored-procedure-and-parameters)可能重複 –

+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!")); 
+0

完美的工作,謝謝! –

+1

很高興看到你解決了你的問題。如果您正在使用SQL Server,請考慮上面的marc_S的註釋。祝你好運! – dash

+0

@DanC。 :不要忘記將答案標記爲已接受;) – Otiel