Возможно, лучше не смешивать код пользовательского интерфейса с кодом базы данных.
Я создал класс для данных о ценах.
Public Class NewPrice
Public Price As Double
Public ID As Integer
Public Sub New(p As Double, i As Integer)
Price = p
ID = i
End Sub
End Class
Код базы данных может выглядеть как следующий. Соединения должны создаваться и удаляться в том методе, в котором они используются. Блок Using...End Using
гарантирует, что ваши объекты базы данных закрыты и удалены. Конструктор соединения может принимать строку соединения в качестве аргумента; аналогично команда может принимать в качестве аргументов оператор sql и соединение.
Перед l oop мы создаем соединение и команду, и соединение открывается. Только значения параметров меняются внутри l oop
Private ConStr As String = "Server=127.0.0.1;Port=5432;Database=magic;User Id=magic;Password=magic;"
Public Sub UpdateMagicPrice(PriceList As List(Of NewPrice))
Using cn As New NpgsqlConnection(ConStr),
cmd As New NpgsqlCommand("update magic set price = @Price where ID= @ID", cn)
cn.Open()
For Each np In PriceList
cmd.Parameters.Add("@Price", NpgsqlDbType.Double).Value = np.Price
cmd.Parameters.Add("@ID", NpgsqlDbType.Integer).Value = np.ID
cmd.ExecuteNonQuery()
Next
End Using
End Sub
В коде пользовательского интерфейса мы создаем список ваших данных.
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim p As Double = 13.95
Dim lst As New List(Of NewPrice)
For i = 1 To 4
lst.Add(New NewPrice(p, i))
Next
UpdateMagicPrice(lst)
End Sub
Надеюсь, это поможет вам начать к своей цели.