0

MS AccessDBにクエリを実行しようとしていますC#

静的クエリは -

Select FieldID , CDGroups.CDGroupID , Priority
from Fields , CDGroups
where Fields.CDGroupID = CDGroups.CDGroupID
  and Fields.FieldID in ('f1','f2','f3')
order by Priority

fieldIdList(List<string> fieldIdList)f1、f2を置き換える必要があります..これらすべてのフィールドを含むFieldID

どうすればそれについて行くことができますか?

4

4 に答える 4

1

正しい方法は、SQL パラメータを使用することです。
これを行うには、リストをループして、リスト項目ごとに 1 つのパラメーターを作成する必要があります (SQL 文字列クエリの SQL パラメーターのリスト内)。

同様の質問に対するこの回答を見てください:
How to pass sqlparameter to IN()?

于 2012-04-06T12:57:14.337 に答える
0
 var listId= string.Join(",", fieldIdList.Select(m => string.Format("'{0}'", m)));;

それから

"Field.FieldID in (" + listId+ ")
于 2012-04-06T12:50:30.093 に答える
0

このクエリを試してください -

SELECT CDGroupID FROM fields
  WHERE FieldID IN ('f1', 'f2', 'f3')
  GROUP BY CDGroupID
  HAVING(COUNT(DISTINCT FieldID)) >= 3

少なくとも「f1」、「f2」、および「f3」を持つ CDGroupID のリストが表示されます。「f1」、「f2」、および「f3」のみを含むものを表示する場合は、WHERE 条件を「HAVING(COUNT(DISTINCT FieldID)) >= 3」に変更します。

于 2012-04-06T14:23:19.117 に答える
0

次のコードを使用しました:

 StringBuilder sb = new StringBuilder();

                foreach (string fieldId in fieldIdList)
                {
                    sb.Append("'" + fieldId + "',");
                }

                string fieldList = sb.ToString().TrimEnd(',');

                string queryString =
                    "Select FieldID , CDGroups.CDGroupID , Priority from Fields , CDGroups where Fields.CDGroupID = CDGroups.CDGroupID and Fields.FieldID in (" + fieldList + ") order by Priority";
于 2012-04-06T13:12:58.283 に答える