我目前正在连接并使用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,以及当前的?我尝试以不同的方式添加参数,包括删除参数名称中的@。似乎没什么用。有人能指出我正确的方向吗?
答案 0 :(得分:4)
AFAIK,MS Access中没有LIMIT
子句。
并且,参数应该在您的案例中命名为@p1
,而不是?
我多年没有使用过Access,所以我可能错了,但不是LIMIT
,试试这个:
Select TOP 1 ID from pages where page_title = @p1
此外,如果合适,请考虑以下建议:
MS Access不是处理网站的正确DBMS(我怀疑在你的情况下它是一个网站)。对于替代的基于文件的数据库管理系统,请选中SQLite和FirebirdSQL。两者都有许多可用于GUI的工具,如SQLite Maestro和IBExpert 这些DBMS中的查询更加灵活。