1

私は次のコードを持っています:

Dim executedCmd As OleDb.OleDbCommand = m_dbMgr.GetCommand()
executedCmd.CommandText = "select * from [Parameters] where "
Dim SQLcondition As String = String.Empty
For i As Integer = 0 To ParameterName.Count - 1
 executedCmd.CommandText += "ParameterName = @parametername" + i.ToString() + " and ParameterValue @ParamaterCondition" + i.ToString() + " @ParameterValue" + i.ToString()
 executedCmd.Parameters.AddWithValue("@parametername" + i.ToString(), ParameterName(i))
 executedCmd.Parameters.AddWithValue("@ParameterValue" + i.ToString(), ParameterValue(i))
 executedCmd.Parameters.AddWithValue("@ParamaterCondition" + i.ToString(), Condition(i))
Next

ParameterNameParameterValueParameterConditionすべて同じ長さArrayListですが、コードは正しく動作しません。すべての変数に値があることを確認しました。

コードを実行すると、構文エラーが報告されます:「クエリ式に操作がありません」

問題は、(、、、.... いくつかの論理 SQL 演算子) のような値を持つことですParameterCondition'>''<''='

編集: パラメータに条件を含めるにはどうすればよいですか?

4

2 に答える 2

1

1 = 1論理式の作成を簡素化する場所の後に追加します。ANDすべての条件が論理演算子によって追加されていることに注意してください。列名からパラメータ名を生成できます。

executedCmd.CommandText = "select * from [Parameters] where 1 = 1"

....
executedCmd.CommandText += " AND " + ParameterName(i) + " " + Condition(i) + " @" + ParameterName(i)
executedCmd.Parameters.AddWithValue("@" + ParameterName(i), ParameterValue(i))

ParameterConditionはすべて二項演算子である必要があります。

于 2013-02-01T07:04:19.313 に答える