我有一個查詢,基本上是這樣的:如何通過一個列表作爲PARAM在.NET
SELECT foo
FROM bar
where bar.Id in (1,2,3);
我想通過標識在列表中與IDbDataParameter一個param其中查詢格式化:
SELECT foo
FROM bar
where bar.Id in (?ListOfID);
,然後有一個PARAM這是一個名單,而不是必須做這樣的事情:
SELECT foo
FROM bar
where bar.Id in (?id1, ?id2, ?id3);
我知道這是可能的其他數據提供者可以用標準的System.Data類來做到這一點嗎?
P.S.我希望它作爲單個列表參數而不是一系列參數的原因是因爲隨着參數數量的變化,MySQL會將查詢視爲新的並且我們放棄了一些緩存優化。 MySQl基本上以每個ID的一個查詢結束。這同樣是因爲我不想將字符串SQl作爲基本SQl操作,因爲那樣我最終會得到每個VAULE的一個查詢,這會更糟糕。
我不知道這是否回答你的問題,但爲什麼不使用PARAMS [] INT IDS? – alexn 2009-09-21 17:49:53
@alexn:這是關於ADO.NET命令參數的,而不是關於方法的。 – 2009-09-21 18:09:52
有沒有這些問題有幫助? http://stackoverflow.com/search?q=parameterize+in+clause – Greg 2009-09-21 19:50:17