[英]How to pass list of guid as a parameter to a sql command
我需要通过将 id 列表传递给来过滤 sql 请求,这是命令:
var command = "select Software.Name as SoftwareName,SoftwareType.Name as SoftwareType from AssetManagement.Asset as Software inner join AssetManagement.AssetType as SoftwareType on (SoftwareType.Id = Software.TypeId) where Software.Id in (@P)";
cmd.Parameters.AddWithValue("@P", authorizedSoftwaresId);
authorizedSoftwaresId 是一个字符串列表,包含如下数据:
“7D23968B-9005-47A9-9C37-0573629EECF9,F1982165-3F6D-4F35-A6AB-05FA116BA279”它只返回一行,我尝试为每个值添加引号但我得到“从字符串字符到唯一标识符的转换失败”异常
这是一个很常见的问题,答案可能取决于您的数据库引擎以及您是否使用 ADO.Net、Dapper 等。
我会根据我自己在 MS Sql 服务器和 PostgreSQL 上遇到此问题的经验为您提供一些提示。
AddWithValue
是个魔鬼。 您可能会考虑Add
。IN (@P)
可能是问题的根源。 请改用Any
选项。 请参见SQL 中 IN 和 ANY 运算符的区别; 在类似的情况下,我已经成功地进行了这种改变。'
)。 这种选择会产生后果,比如它可能会阻止您使用参数 (@P),而是构造您想要的最终 SQL 语句(即,通过字符串操作手动构造整个 WHERE 子句并丢失参数。)祝你好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.