テキストボックスとドロップダウンから値を取得し、それらを使用して SQL テーブルを更新するループがあります。パラメータの名前を変更し、ループがカウントする変数に基づいて値を与える必要があります。例: ループが 0 から 2 に移動する場合、textname_0 は @paramname_0 に移動し、textname_1 は @paramname_1 に移動します。
以下のコードを書きましたが、最初のパラメーターが見つからないことを示すエラーが生成されるため、構文が明らかに間違っています。
Protected Sub Insert_To_Tables()
Try
Dim con As SqlConnection = New SqlConnection()
Dim connectionString As String = "Data Source=wolf;Initial Catalog=Seat_Planner_2013;Integrated Security=True;Integrated Security=True"
Using cn As New SqlConnection(connectionString)
For i As Int32 = 0 To number_of_tickets_Ddl.SelectedValue
cn.Open()
Dim cmd As New SqlCommand()
cmd.CommandText = "INSERT INTO tables ([table_num], [seat], [available], [ticket_num], [seat_title], [seat_firstname], [seat_surname], [booking_ref],[booked_by]) VALUES (@table_num_ & i, @seat_ & i, @available_ & i, @ticket_num_ & i, @seat_title_ & i, @seat_firstname_ & i, @seat_surname_ & i, @booking_ref, @booked_by) WHERE ([table_num] = @table_num) AND ([seat] = @seat_ & i)"
cmd.Parameters.Add("@table_num", SqlDbType.SmallInt).Value = ddltable.SelectedValue
cmd.Parameters.Add("@seat_" & i, SqlDbType.NChar).Value = CType(Me.FindControl(("DDLSeat_") & i), DropDownList).SelectedValue
cmd.Parameters.Add("@available", SqlDbType.NChar).Value = "No"
cmd.Parameters.Add("@ticket_num_" & i, SqlDbType.NChar).Value = CType(Me.FindControl(("TicketNo_TextBox_") & i), TextBox).Text.Trim
cmd.Parameters.Add("@seat_title_" & i, SqlDbType.NChar).Value = CType(Me.FindControl(("Title_TextBox_") & i), TextBox).Text.Trim
cmd.Parameters.Add("@seat_firstname_" & i, SqlDbType.NChar).Value = CType(Me.FindControl(("FirstName_TextBox_") & i), TextBox).Text.Trim
cmd.Parameters.Add("@seat_surname_" & i, SqlDbType.NChar).Value = CType(Me.FindControl(("Surname_TextBox_") & i), TextBox).Text.Trim
cmd.Parameters.Add("@booking_ref", SqlDbType.NChar).Value = booking_ref_LBL.Text
cmd.Parameters.Add("@booked_by", SqlDbType.NChar).Value = CType(Me.FindControl(("TBoxFull_name_0")), TextBox).Text.Trim
cmd.Connection = cn
cmd.ExecuteNonQuery()
cn.Close()
Next
End Using
DB_error1.Text = " Insert to tables success. "
Catch ex As Exception
DB_error1.Text = "Fail "
DB_error1.Text = DB_error1.Text + ex.Message.ToString
Finally
End Try