我在这里做错了什么?
string favorites = "210,213";
sqlCommand.CommandText = "select * from clients (nolock)
where Deleted = 0 and ClientID in (@favorites)";
sqlCommand.Parameters.AddWithValue("@favorites", favorites);
另一说明:“210,213”只是一个示例。它可以是任意长度的数字。这就是我使用 SQL IN 运算符的原因。
谢谢。
最佳答案
参数不是这样工作的。您实际上正在尝试获取 ClientID 等于“210,213”的客户端。嗯,这不是一个数字,所以失败了。
如果您的 IN
列表大小是动态的、不时变化,参数化查询和 IN
子句实际上并不是简单地一起实现。
阅读这个问题和答案:Parameterize an SQL IN clause
通常,您必须动态组合 SQL 查询,始终牢记类似 SQL Injection 的问题。 .
进一步阅读:
关于c# - 将 nvarchar 值转换为数据类型 int 时转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178548/