为动态创建的文本框插入查询

时间:2013-03-12 11:30:13

标签: c# sql-server

我有动态生成的文本框,我需要在我的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将直接传递给插入查询,以便直接获取所有值。

但逻辑不起作用。

请帮助..

2 个答案:

答案 0 :(得分:1)

几点

  1. 您的方法让您受SQL injection次攻击。这是件坏事。您应该使用sqlCommand对象来执行SQL,使用参数对象传入要插入的值,这样可以防止SQL注入攻击。
  2. 在插入的表格中的每一列之后命名您的文本框。
  3. 希望这有帮助

答案 1 :(得分: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()

我没有添加错误处理