2014-02-20 54 views
2

我的原始查詢使用@WF_ID作爲參數名稱,並且執行時沒有任何問題。雖然我很懶,WF_的輸入很多,所以我將參數重命名爲@ID,但現在執行時拋出了SQLException。確切的消息是「無效列名稱_Page」爲什麼要更改參數化查詢中的參數名稱會導致拋出SqlException?

這裏是查詢和相應代碼的兩個版本。正如你所看到的,唯一改變的是參數名稱。

SQL_Connection.Open(); 
SQL_Command.Connection = SQL_Connection; 
SqlParameter param = new SqlParameter("@WF_ID", SqlDbType.Int); 
param.Value = WF_ID; 
SQL_Command.Parameters.Add(param); 
SQL_Command.CommandText = "SELECT COUNT(*) AS MyCount from members WHERE ID = @WF_ID"; 
int numRows = Convert.ToInt32(SQL_Command.ExecuteScalar().ToString()); 
SQL_Command.Parameters.Clear(); 

2.0版破版

SQL_Connection.Open(); 
SQL_Command.Connection = SQL_Connection; 
SqlParameter param = new SqlParameter("@ID", SqlDbType.Int); 
param.Value = WF_ID; 
SQL_Command.Parameters.Add(param); 
SQL_Command.CommandText = "SELECT COUNT(*) AS MyCount from members WHERE ID = @ID"; 
int numRows = Convert.ToInt32(SQL_Command.ExecuteScalar().ToString()); 
SQL_Command.Parameters.Clear(); 

我最初的想法是一個參數名稱不能是相同的列名的一個...但我無法找到任何明確地說, 。

看着這個StackOverflow主題看起來你不能通過參數傳遞列名。 Can I pass column name as input parameter in SQL stored Procedure

+0

要將您的理論文本重命名爲除已使用的兩個名稱以外的其他名稱,並查看它是否有效。 –

回答

7
"SELECT COUNT(*) AS MyCount from members WHERE ID = " + @WF_ID; 

這根本不是參數化查詢。你只是將值串聯到你的SQL字符串。

"SELECT COUNT(*) AS MyCount from members WHERE ID = @WF_ID"; 

這將使它使用你的參數。

+0

我的不好。我一直在玩弄代碼嘗試不同的事情,以便找出這些,並忘記在發佈帖子時將其改回。 – TheDude

相關問題