1

我一直在尝试使用以下参数将不同的值作为 sql 查询传递:

SELECT TOP 5 * 
FROM Events 
WHERE EID NOT IN (SELECT TOP @limit EID FROM Events ORDER BY EID)

用于查找参数值指定的前 n 行之后的记录@limit

例如,如果我指定值 10,则查询返回第 6-10 行。

现在我正在做的是

string str = "SELECT TOP 5 * FROM Events WHERE EID NOT IN (SELECT TOP @limit EID FROM Events ORDER BY EID)"

SqlCommand cmd=new SqlCommand(str,con); // con is the connection string

cmd.Parameters.AddWithValue("limit", value);

SqlDataAdapter sda= new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
sda.Fill(ds);

return ds;

然后将数据集ds绑定到一个Datalist.

目前抛出一个错误说

“@limit 附近的语法不正确”

代码有什么问题..?

4

1 回答 1

6

使用参数拉取时TOP n,必须将参数括在括号中:

string str= "SELECT TOP 5 * FROM Events WHERE EID NOT IN (SELECT TOP (@limit) EID FROM Events ORDER BY EID)"
于 2013-05-07T16:15:18.900 回答