我想在vb.net中构建一个循环,将价格更新到数据库中。最终目标是构建一个API,它接受价格并插入到ID为动态的数据库中
今天的目标是构建一个循环,将1插入到“价格”表中,其中ID是1-4,但我希望价格是动态的,但当我单击按钮时,它显示了正确的语法,但他没有更新。
你能给我一些小贴士或窍门来帮助我吗?我在DataAdapter上读到一些东西,但我一点头绪也没有。
代码:
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
pgConnectionString = "Server=127.0.0.1;Port=5432;Database=magic;User Id=magic;Password=magic;" 'PostgreSQL connection'
pgConnection.ConnectionString = pgConnectionString
pgCommand.Connection = pgConnection
pgCommand.CommandType = CommandType.Text
Dim apiid As Integer
apiid = 1
Do While apiid <= 4
pgConnection.Open()
pgCommand.CommandText = "update magic set price = 1 where ID=" & apiid & ""
pgConnection.Close()
MessageBox.Show(pgCommand.CommandText)
apiid += 1
Loop
End Sub发布于 2020-08-07 06:47:09
这里有一些你可能想要读一读的东西。但我想这应该能让你开始
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
pgConnectionString = "Server=127.0.0.1;Port=5432;Database=magic;User Id=magic;Password=magic;" 'PostgreSQL connection'
pgConnection.ConnectionString = pgConnectionString
pgCommand.Connection = pgConnection
pgCommand.CommandType = CommandType.Text
Dim apiid As Integer
apiid = 1
Do While apiid <= 4
pgConnection.Open()
pgCommand.CommandText = "update magic set price = 1 where ID=" & apiid & ""
pgCommand.ExecteNonQuery() 'As per comments above
pgConnection.Close()
MessageBox.Show(pgCommand.CommandText)
apiid += 1
Loop
End Sub您需要考虑的其他事情是连接和命令对象都实现了IDisposable,因此使用语句为您处理连接状态和垃圾收集将是一个好主意。接下来,您将阅读有关使用参数的知识。这将允许您保持初始需求的价格动态,它不容易出错,最后,它引入了保护数据库完整性的安全元素(SQL注入)。
发布于 2020-08-07 09:01:50
最好不要将用户界面代码与数据库代码混在一起。
我为价格数据创建了一个类。
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语句和连接作为参数。
在循环之前,我们创建连接和命令,并打开连接。只有参数的值在循环内更改
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我希望这能让你开始实现你的目标。
https://stackoverflow.com/questions/63290167
复制相似问题