我正在尝试使用 MS Access 数据库更新记录,但所有记录都使用相同的值进行更新..我尝试使用带有位修改的 sql server 进行相同的编码,并且此编码与 sql server 完美配合... MS Access 有什么问题?这是我的代码:
Try
con = New OleDbConnection(cs)
con.Open()
Dim cb As String = "update ExtraServices set [Item]=?, [Quantity]=?,[UnitPrice]=?, [TotalPrice]=? where [HostelerID]=? and [Servicedate]=?"
Dim cmd As New OleDb.OleDbCommand(cb, con)
cmd.Parameters.Add(New OleDbParameter("@item", OleDbType.VarChar, 150, "Item"))
cmd.Parameters.Add(New OleDbParameter("@quantity", OleDbType.Integer, 6, "Quantity"))
cmd.Parameters.Add(New OleDbParameter("@unitprice", OleDbType.Integer, 6, "UnitPrice"))
cmd.Parameters.Add(New OleDbParameter("@total", OleDbType.Integer, 6, "TotalPrice"))
cmd.Parameters.Add(New OleDbParameter("@hostelerID", OleDbType.VarChar, 20, "HostelerID"))
cmd.Parameters.Add(New OleDbParameter("@ServiceDate", OleDbType.Date, 30, "ServiceDate"))
' Prepare command for repeated execution
cmd.Prepare()
' Data to be inserted
For Each row As DataGridViewRow In DataGridView1.Rows
If Not row.IsNewRow Then
cmd.Parameters("@item").Value = row.Cells(0).Value
cmd.Parameters("@quantity").Value = row.Cells(1).Value
cmd.Parameters("@unitprice").Value = row.Cells(2).Value
cmd.Parameters("@total").Value = row.Cells(3).Value
cmd.Parameters("@HostelerID").Value = cmbHostelerID.Text
cmd.Parameters("@ServiceDate").Value = dtpServiceDate.Text
cmd.ExecuteNonQuery()
End If
Next
con.Close()
MessageBox.Show("Successfully updated", "Entry", MessageBoxButtons.OK, MessageBoxIcon.Information)
btnUpdate_record.Enabled = False
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try