Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 动态多重插入_.net_Sql Server 2005_Insert - Fatal编程技术网

.net 动态多重插入

.net 动态多重插入,.net,sql-server-2005,insert,.net,Sql Server 2005,Insert,我有一个表单,允许用户在数据库中插入“项”。字段询问要插入多少项。相同的数据(除了它们的ID)按它们选择的次数插入到数据库中。我找到了插入多个项目的不同方法,但在动态完成时却没有。我正在使用.NET3.5和SQLServer2005。我必须使用For…Next语句还是有其他方法?谢谢 更新:我的简化插入代码如下: Dim sqlCmd1 As String sqlCmd1 = "INSERT INTO Table_Items (ItemType, ItemDescription

我有一个表单,允许用户在数据库中插入“项”。字段询问要插入多少项。相同的数据(除了它们的ID)按它们选择的次数插入到数据库中。我找到了插入多个项目的不同方法,但在动态完成时却没有。我正在使用.NET3.5和SQLServer2005。我必须使用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

由于这是相同的数据,并且考虑到最坏的情况,即用户选择插入的数量(多少项)将合理地增加,为了避免不必要的负载到数据库,我将编写一个存储过程,并只传递总数和项数据。如果属性更多,则对项目数据使用XML。

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

为i As Integer=1计数器Cmd1.ExecuteScalar()下一步

但请注意,这肯定不是一般用法的正确方法。当你保持它小,没有这么多的开销,否则最好走@anivas的路


同时检查,如果可能的话,我建议切换到LINQToSql。这会节省你很多时间。检查,然后

当您谈论“动态完成”时,您的意思是什么?使用DB有很多种方法,您使用哪一种?LINQToSql、数据适配器、StoredProcess调用或其他什么?您需要一次插入多少项(例如10项或10000项)才能使用批量处理?谢谢您的评论。这是一个家具存储库的数据库,所以我想它可以从1到50。我使用SQLServer2005。谢谢。你如何在数据库中插入1项,你能显示你的代码吗?或者你问如何进行插入?更新插入代码,谢谢。我不能使用xml,因为它是SQLServer2005数据库。谢谢。您可以使用它,但可能不会:XML在SQLServer2005中是有效的数据类型。谢谢您的回答。我会试试李尔林。就在最近,我正在使用.NET3.5。只有两到三个管理员可以进行多次插入,因此可以节省使用。再次感谢。