다음은 데이터베이스 계층 함수의 코드입니다.C# asp.net : error - 하나 이상의 필수 매개 변수에 지정된 값이 없습니다.
public static dsPersonnel GetPersonnel(string Database, string strSearch)
{
dsPersonnel DS;
OleDbConnection sqlConn;
OleDbDataAdapter sqlDA;
//create the connection string
sqlConn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + Database);
string query;
if (strSearch == "" || strSearch.Trim().Length == 0)
{
query = "SELECT * from tblPersonnel";
}
else
{
query = "SELECT * FROM tblPersonnel WHERE LastName = " + strSearch + "";
}
//create the adapter with query
sqlDA = new OleDbDataAdapter(query, sqlConn);
//create the dataset
DS = new dsPersonnel();
//fill the data set
sqlDA.Fill(DS.tblPersonnel);
//return the dataset
return DS;
}
}
포스트 백이 빈 문자열을 제출하면 모든 레코드가 반환됩니다. 하지만 실제 문자열이 함수에 전달되면 "하나 이상의 필수 매개 변수에 값이 지정되지 않았습니다"라는 오류 메시지가 나타납니다.
sqlDA.Fill(DS.tblPersonnel);
디버그에서 문자열이 두 경우 모두 올바르게 작성되고 있는지 확인했지만 후자의 경우 오류가 발생합니다. 나는라는 매개 변수화 된 쿼리를 사용해야한다는 것을 알고 있지만 이것이 내가 배우는 클래스의 학습 과정에서의 단계입니다. 한 번에 하나의 문제 :). 이 문제가 무엇인지에 대한 제안 사항이 있습니까?
귀하의 코드는 [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)에 열려 있습니다. – Oded