我有一个查询,大致如下:
SELECT foo
FROM bar
where bar.Id in (1,2,3);
我想通过 IDbDataParameter 把 ID 列表作为单个参数传递,查询语句的格式如下:
SELECT foo
FROM bar
where bar.Id in (?ListOfID);
然后只需要一个参数,就是一个列表,而不需要像这样做:
SELECT foo
FROM bar
where bar.Id in (?id1, ?id2, ?id3);
我知道其他数据提供程序可以实现这一点,但我能否使用标准的System.Data类来完成呢?
顺便说一下,我希望将它作为一个单一的列表参数而不是一系列参数,因为随着参数数量的变化,MySQL将视查询为新查询,我们会失去一些缓存优化。这也是我不想只是将基本SQL作为字符串进行操作的原因,因为那样我最终会得到每个值一个查询,这会更糟糕。