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 回答