0

検索するテーブルを決定するドロップダウン リストを持つ ASP.NET に組み込まれた検索フォームがあります。両方のテーブルの構造は似ていますが、列名が場所によって異なるため、各テーブルの情報を別のテーブルに入れています。基本的には次のように設定されています。

名前|フォーム フィールド名|テーブル名|テーブル列名

そこから、ドロップダウン リストでの選択に応じて、フォーム フィールド名、テーブル名、および列名を保持するループを設定します。ループはその情報を取得し、ユーザーの入力に基づいて StringBuilder を使用して個別の MySQL クエリを作成します。ループは次のとおりです。

If drFields.HasRows Then
    While drFields.Read()
        If drFields("ASPControlName") <> "" Then
            If strbQuery.ToString <> "" Then
                strbQuery.Append(" AND ")
            End If
            strbQuery.Append(" " & drFields("DBField") & " LIKE '%" & drFields("ASPControlName").ToString & "%' ")
        End If
    End While
End If

あなたが言うことができると確信しているように、私の問題は、txtFirstName.Text.Trimの行に沿って何かで満たされたdrFields( "ASPControlName")が、txtFirstName.Text.Trimの文字列にしか出てこないことです。初期化。変数は、私が望むようにテキストボックスを参照するように変換されません。

これはおそらく逆の方法であることはわかっていますが、私がやろうとしていることを達成することさえ可能ですか? ありがとう!

4

1 に答える 1

0

私はこれがおそらくそれを行う逆の方法であることを知っています

とても真実です。私はこのルートを続行しません。

しかし、私がやろうとしていることを達成することさえ可能ですか?

はい、リフレクションを使用してコントロールを取得し、実際の値を受け取るために必要なプロパティを呼び出すことができますが、これはまったく良い方法ではないため、例は示しません。

また、説明したような動的クエリを作成するには、SQL インジェクション攻撃にさらされないようにするための特別な処理が必要です。ここで戦略を再考してみてください。

質問に十分なコンテキストがあるとは思わないため、あなたに役立つものを提案することは困難ですが、通常、特定のパラメーターに基づいて必要なクエリを実行するストアド プロシージャを作成することを選択します。

役立つリソース:

于 2012-08-01T17:58:21.070 に答える