динамическая множественная вставка - PullRequest
0 голосов
/ 18 октября 2010

У меня есть форма, которая позволяет пользователям вставлять «элементы» в базу данных.Поле спрашивает, сколько элементов они хотят вставить.Идентичные данные (кроме их идентификатора) вставляются в базу данных столько раз, сколько они выбрали.Я нашел разные способы вставить несколько элементов, но не тогда, когда это делается динамически.Я использую .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 ]

1 голос
/ 18 октября 2010

Самый простой способ использовать свой стиль - просто добавить вызов Cmd1.ExecuteScalar () в цикле

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

Но учтите, что это, безусловно, , а не правильный путь для общего пользования.Несмотря на то, что вы сохраняете его небольшим, накладных расходов не так много, иначе лучше пойти @anivas.

Также проверьте Обучающие материалы по доступу к данным ASP.NET , и я бы рекомендовал перейти на LINQToSql , если это возможно.Это сэкономит вам много времени.Проверьте Использование LINQ для SQL Series , LINQ через C # и Использование LINQ для SQL в Visual Basic

1 голос
/ 18 октября 2010

Поскольку это идентичные данные и, учитывая наихудший случай, число, которое пользователь выбирает для вставки (сколько элементов), будет разумно большим, чтобы избежать нежелательной полезной нагрузки в базу данных, я написал бы хранимую процедуру и просто передал бы общее и данные о товаре. Используйте XML для данных элемента, если свойства больше.

...