我一直在尝试使用如下参数在 sql 查询中传递一个不同的值:
SELECT TOP 5 *
FROM Events
WHERE EID NOT IN (SELECT TOP @limit EID FROM Events ORDER BY EID)
用于查找由参数 @limit
的值指定的前 n 行之后的记录。
例如如果我指定值 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
绑定(bind)到 Datalist
。
当前抛出一个错误说
"incorrect syntax near @limit"
代码有什么问题……?
最佳答案
当使用参数拉取 TOP n
时,您必须将参数括在括号中:
string str= "SELECT TOP 5 * FROM Events WHERE EID NOT IN (SELECT TOP (@limit) EID FROM Events ORDER BY EID)"
关于c# - 使用参数化查询填充数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16423786/