2014-02-20 3 views
2

내 원본 쿼리가 @WF_ID를 매개 변수 이름으로 사용 했으므로 아무런 문제없이 실행됩니다. 나는 게으르다. WF_는 많은 타이핑을하기 때문에 매개 변수의 이름을 @ID로 바꿨지 만 SQLException이 실행될 때 실행된다. 정확한 메시지는 "잘못된 열 이름 '_Page'입니다.매개 변수가있는 쿼리에서 매개 변수 이름을 변경하면 SqlException이 throw되는 이유는 무엇입니까?

두 가지 버전의 쿼리와 해당 코드가 있습니다. 보시다시피 매개 변수 이름 만 변경되었습니다.

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 문자열로 concatinated했습니다.

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

이렇게하면 매개 변수가 사용됩니다.

+0

제 잘못입니다. 나는 이것을 알아 내기 위해 여러 가지를 시도하는 코드로 놀고 있었고 포스트를 만들 때 다시 그것을 잊어 버렸다. – TheDude