1

いくつかのチェックボックスの状態に応じて、SQLクエリまたは単に空( "")のいずれかである9つの文字列があります。私はそれらを次のような別の文字列に組み合わせる必要があります

string OP = "AND";
string query = "select * from table where " + string1 + OP + string2 + OP + string3 + OP + ... + " order by ID;"

問題は、文字列の間に、ANDまたはが必要なことORです。しかし、いずれかの文字列が空の場合、SQLエラーが発生します。SQLは次のようなものを理解していません

select * from table where AND a = "adsf" AND AND AND z = "fghj" AND order by ID;

次のようになります。

select * from table where a = "adsf" AND z = "fghj" order by ID;
4

3 に答える 3

1
文字列クエリ=
   "select * from table where"
   + string1
   + String.IsNullOrEmpty(string2)?"":(OP + string2)
   + String.IsNullOrEmpty(string3)?"":(OP + string3)
   +..。
   +「IDで注文;」
于 2012-09-15T16:38:11.080 に答える
1

ヌルをテストする

string query = "select * from table where " + 
String.IsNullOrEmpty(string1) ? "" : (string1+OP) + 
String.IsNullOrEmpty(string2) ? "" : (string2+OP) + 
...+
String.IsNullOrEmpty(string9) ? "" : string9;


//in case your string ends with AND which will if `string9` is empty
if (query.EndsWith("AND"))
{
    int andIndex = query.LastIndexOf("AND");
    query = query.Substring(0, andIndex);
}

query = query + " order by ID;"
于 2012-09-15T16:39:03.020 に答える
1

You can put the strings in an array, remove the empty strings, and combine them using Join:

string[] conditions = new string[] {
  string1,
  string2,
  string3,
  string4
};

string op = " and ";
string query =
  "select * from table where " +
  String.Join(op, conditions.Where(c => c.Length > 0)) +
  "select * from table where ";

And for framework 3.5 change to:

  String.Join(op, conditions.Where(c => c.Length > 0).ToArray()) +
于 2012-09-15T16:44:12.087 に答える