动态多次插入

时间:2010-10-18 09:13:30

标签: .net sql-server-2005 insert

我有一个允许用户在数据库中插入“项目”的表单。一个字段询问他们想要插入多少项。相同的数据(除了它们的ID)在数据库中插入它们选择的次数。我发现了插入多个项目的不同方法,但是在动态完成时却没有。我正在使用.net 3.5和SQLServer 2005.我是否必须使用For ... Next语句或者还有其他方法吗?感谢

更新:我的简化插入代码如下:

    Dim sqlCmd1 As String

    sqlCmd1 = "INSERT INTO Table_Items (ItemType, ItemDescription, ContactName, ContactEmail) VALUES (@ItemType, @ItemDescription, @ContactName, @ContactEmail);"

    'Dim ID As Integer
    Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ToString()
    Dim conn As SqlConnection = New SqlConnection(connectionString)
    Dim Cmd1 As SqlCommand = New SqlCommand(sqlCmd1, conn)

    With Cmd1.Parameters
        .Add(New SqlParameter("@ItemType", Textbox1.Text))
        .Add(New SqlParameter("@ItemDescription", Textbox2.Text))
        .Add(New SqlParameter("@ContactName", Textbox3.Text))
        .Add(New SqlParameter("@ContactEmail", Textbox4.Text))

    End With

    Try
        conn.Open()
        ID = Cmd1.ExecuteScalar()
        Server.Transfer("confirmation.aspx")
        conn.Close()
    Catch ex As SqlException
        lblError.Text = ex.Message()
    End Try

2 个答案:

答案 0 :(得分:1)

由于这是相同的数据,并且考虑到最坏的情况,用户选择插入的数量(多少项)将相当多,为了避免不必要的有效负载到数据库,我会写一个存储过程,只是通过总和和项目数据。如果属性更多,则使用XML作为项目数据。

答案 1 :(得分:1)

使用您的样式的最简单方法是在循环中添加对Cmd1.ExecuteScalar()的调用

For i As Integer = 1 To Counter Cmd1.ExecuteScalar() Next

但请注意,对于一般用法,这肯定是正确的方法。虽然你保持小,但没有那么多开销,否则最好去@anivas方式。

同时检查ASP.NET Data Access Tutorials我会建议切换到 LINQToSql (如果可能)。它会为你节省很多时间。查看Using LINQ to SQL SeriesLINQ via C#Using LINQ to SQL in Visual Basic