0

SQL server 2005データベースに挿入クエリを書き込む必要があるテキスト ボックスを動的に生成しました。問題は、挿入クエリを作成するときに、テキスト ボックスが実行時に生成されるため、テキスト ボックス名を含めることができないことです。

次のロジックを使用してみました。

動的テキストボックスを生成してから動的 SQL クエリを生成したいことに注意してください。

   String str=//will contain a data fetched from all the textboxes generated dynamically and will be seprated using a ','(as in an insert statement).

この文字列strは挿入クエリに直接渡されるため、すべての値が直接取り込まれます。

しかし、ロジックは機能しません。

助けてください..

4

2 に答える 2

1

いくつかのポイント

  1. この方法では、SQL インジェクション攻撃にさらされます。これは悪いことです。sqlCommand オブジェクトを使用して SQL を実行し、パラメーター オブジェクトを使用して挿入する値を渡す必要があります。これにより、SQL インジェクション攻撃を防ぐことができます。
  2. 挿入するテーブルの各列にちなんでテキストボックスに名前を付けます。

お役に立てれば

于 2013-03-12T11:39:36.740 に答える
0

テキストボックスが生成されるときに、それらを追跡する必要があります。

List<TextBox> TextBoxes = new List<TextBox>();

..。

TextBox DynamicBox1 = new TextBox();
...
TextBoxes.Add(DynamicBox1);

次に、列の名前がどこかにある場合

string Columns = "@col0, @col1, @col2"; //etc

string Query = @"INSERT INTO [Table]
                 (" + Columns.Replace("@", "") + ")
                 VALUES (" + Columns+ ")";

パラメータ化されたコマンドを使用する

SqlCommand Command = new SqlCommand(Query, Connection);

for (int i=0; i<TextBoxes.Count; i++)
{
    Command.Parameters.AddWithValue("@col" + i, TextBoxes[i].Text);
}

Connection.Open()
Command.ExecuteNonQuery();
Connection.Close()

エラー処理に追加していません

于 2013-03-12T12:54:53.660 に答える