c# - 使用参数化查询填充数据列表

标签 c# sql parameter-passing datalist

我一直在尝试使用如下参数在 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/

相关文章:

SQL Server 查询问题

Javascript 参数被覆盖

python - 为什么十六进制数字在 python 子进程中没有正确传递

c# - 如何在 UWP 中将 `DependencyProperty` 标记为 `BindsTwoWayByDefault`?

C# ? : operator

c# - MVC5 - 如何使用 jquery ajax 将文件上传与模型一起传递给 Controller

MYSQL:存储过程未正确执行带有 'IN' 子句的查询

c# - 如何获取字符串中组的所有排列?

mysql - sql join 中的 order by

javascript - 如何在没有服务器的情况下使用 HTML 表单