C#OleDb select查询抛出缺少的运算符异常

时间:2011-03-08 18:55:16

标签: c# ms-access oledb

我目前正在连接并使用MS Access数据库。我可以做一个通用的select *查询,所以我连接到db,但是当我尝试选择使用参数时,它会抛出一个缺少的运算符异常。

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行:

Exception Details: System.Data.OleDb.OleDbException: Syntax error (missing operator) in query expression 'page_title = ? limit 1'.

我尝试在查询中使用@ p1,以及当前的?我尝试以不同的方式添加参数,包括删除参数名称中的@。似乎没什么用。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

AFAIK,MS Access中没有LIMIT子句。

并且,参数应该在您的案例中命名为@p1,而不是?

我多年没有使用过Access,所以我可能错了,但不是LIMIT,试试这个:

Select TOP 1 ID from pages where page_title = @p1

此外,如果合适,请考虑以下建议:

MS Access不是处理网站的正确DBMS(我怀疑在你的情况下它是一个网站)。对于替代的基于文件的数据库管理系统,请选中SQLiteFirebirdSQL。两者都有许多可用于GUI的工具,如SQLite Maestro和IBExpert 这些DBMS中的查询更加灵活。

相关问题