【发布时间】:2020-02-17 09:00:03
【问题描述】:
这是我尝试执行 sql 命令的方式:
List<int> idsToDelete = new List<int>() { 1, 2, 3 };
string sqlDel = @"DELETE FROM products WHERE product_id IN (:idsToDelete)";
using (OracleCommand cmdDel = new OracleCommand(sqlDel, connexion))
{
cmdDel.Parameters.Add("idsToDelete", idsToDelete.ToArray());
cmdDel.ExecuteNonQuery();
}
我得到以下异常:
无法将对象形式类型“System.Int32[]”转换为类型“System.IConvertible”。
我使用以下命令得到了同样的异常:
string sqlDel = @"DELETE FROM products WHERE product_id IN :idsToDelete";
是否有一种为 IN 条件设置多值参数的正确方法? 我不想格式化命令字符串,因为它必须是可重用的。
【问题讨论】:
-
您希望生成的 SQL 为“... IN (1,2,3)”吗?
-
string sqlDel = $@"DELETE FROM products WHERE product_id IN ({string.Join(", ", idsToDelete)})";或者你必须为idsToDelete中的每个项目创建一个参数