c# - 如何将限制定义为参数?

标签 c# tsql odbc

鉴于 conn 是一个 OdbcConnection 对象并且 count 是一个 int,我将如何使用 count 作为参数我的查询?

...
var query = conn.CreateCommand();
query.CommandText = "select top ? * from players order by Points desc";
query.Parameters.Add("top", OdbcType.Int).Value = count;

var reader = query.ExecuteReader();
while (reader.Read())
{
    ...
}
...

这样我得到一个语法错误 ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '@P1'.

如果我尝试的方法不可行,我该如何改用正确的方法?

最佳答案

您还可以使用 SET ROWCOUNT,优点是您可以使用整数作为参数并避免动态查询。

SET ROWCOUNT @top;

select * from table;

SET ROWCOUNT 0;

阅读documentation

关于c# - 如何将限制定义为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22255115/

相关文章:

tsql - 组合 INSERT INTO 和 WITH/CTE

sql - TOP 减慢查询速度

odbc_connect 成功连接到 Teradata 14.0 后出现 PHP odbc_exec 段错误

database - 查找 ODBC 连接名称

sql - 使用 sql azure 连接 ODBC 进度

c# - 查找/替换功能 RichTextBox

c# - 使用 EF5 更新实体

c# - .NET 4.5 中带有资源 API 的 IdentityServer4 (OWIN)

sql - 验证 SQL Server 中表中的字符串 - CLR 函数或 T-SQL(已更新问题)

c# - 无法将类型为“System.Xml.Linq.XElement”的表达式转换为类型 XXX