MS Access错误:SELECT语句包含拼写错误或缺失的保留字或参数名称,或者标点符号不正确

Ada*_*dam 2 sql asp.net ms-access

[更新:如果我在参数中进行硬编码,则查询有效 - 因此它与我向查询添加参数的方式有关]

对于我的生活,我无法弄清楚这里的问题是什么.

以下是传递给datareader的查询:

    SELECT * FROM (SELECT TOP ? StartDate, [ID] FROM
    (SELECT TOP ? StartDate, [ID] FROM Story 
    ORDER BY StartDate DESC, [ID] DESC) AS foo 
    ORDER BY StartDate ASC, [ID] ASC) AS bar 
    INNER JOIN Story AS t ON bar.ID = t.ID 
    ORDER BY bar.StartDate DESC, bar.[ID] DESC
Run Code Online (Sandbox Code Playgroud)

参数按以下顺序添加:

var pNumToRetrieve = new OleDbParameter("", OleDbType.Integer) {Value = numToGet};
var pResultSet = new OleDbParameter("", OleDbType.Integer) {Value = resultSet};

_cmd.Parameters.Add(pNumToRetrieve);
_cmd.Parameters.Add(pResultSet);
Run Code Online (Sandbox Code Playgroud)

如果我直接将此查询输入访问,它就可以正常工作.但是,从ASP.NET运行查询时,我收到以下错误:

SELECT语句包括拼写错误或缺失的保留字或参数名称,或标点符号不正确.

我究竟做错了什么?

谢谢,

亚当

Dav*_*ton 6

Jet SQL中的TOP N查询中的N无法参数化,周期.您必须动态编写SQL字符串以获取变量N.这意味着您不能使用已保存的QueryDef,或者您必须编辑QueryDef的SQL并在使用之前保存它.