현재 MS Access 데이터베이스에 연결하고 있습니다. 나는 일반적인 select * 질의를 할 수있어 db에 연결되어 있지만 매개 변수를 사용하여 선택하려고하면 누락 된 연산자 예외가 발생합니다.C# OleDb select 쿼리에서 누락 된 연산자 예외가 throw됩니다.
string selectStatement = "Select ID from pages where page_title = ? limit 1";
string title = Request.QueryString["pagetitle"];
OleDbCommand selectCommand = new OleDbCommand(selectStatement, conn);
selectCommand.Parameters.Add("@p1",OleDbType.VarChar);
selectCommand.Parameters["@p1"].Value = System.Web.HttpUtility.UrlDecode(title);
OleDbDataReader selectResult = selectCommand.ExecuteReader();
내가 오류는가 ExecuteReader 라인에 : 나는 현재뿐만 아니라, 쿼리 내부 @ P1을 사용하려고했습니다
Exception Details: System.Data.OleDb.OleDbException: Syntax error (missing operator) in query expression 'page_title = ? limit 1'.
?. 매개 변수 이름에 @를 제거하는 것을 포함하여 여러 가지 방법으로 매개 변수를 추가하려고했습니다. 아무것도 작동하는 것 같습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?
합법적? 그 냄새가 xD 그러나 이것은 질문을 해결합니다. 빠른 답변 감사합니다! – MishieMoo
또한 웹 사이트가 아닙니다. 나는 지역 자동화 테스트를하고있어, 아무도 나에게 이것을 보지 않을 것이다. 나는 PHP/MySQL에서 일반적으로 작동하지만,이 컴퓨터에는 이들을 설치할 수 없으므로이 모든 일은 일종의 kludgey입니다 (20 분 내에 완료 할 수있을 때 C#으로 끝내려면 4 시간 이상이 걸렸습니다!). 이 머신에 다른 DBMS를 설치할 수도 없습니다. 그래서 제 옵션은 제한적이었습니다 =) – MishieMoo
그래도 이런 식으로 다시해야한다면 FirebirdSQL을 사용해보십시오. 설치할 필요가 없습니다. 응용 프로그램 폴더에 복사 된 라이브러리 더미 만 있으면됩니다. 그리고'SELECT FIRST 10 SKIP 20 * FROM table'과 같은 질의를 할 수 있습니다. 많은 DBMS (Access 중 하나)에서 행을 "건너 뛸"수 없으며 항상 WHERE 절에 이것을 배치하는 더 복잡한 방법이 있습니다 (예 : 21 ~ 30 사이의 WHwn WHERE 절). 또는 뭔가. – AlexanderMP