【发布时间】:2022-01-07 01:37:23
【问题描述】:
我的代码没有从数据库中删除任何行。这些行显示在表单的列表视图中。它们可以从表单的列表视图中删除和消失,但不会从数据库表中删除。
另外,我使用 MS Access 作为数据库。
这是代码
Public Sub DeleteProduct()
If ListView1.SelectedIndices.Count <= 0 Then
Return
End If
Dim ItemNo As Integer = ListView1.SelectedIndices(0)
Try
Dim I As Integer = MsgBox("Are you sure you want to delete this record? You can't Undo", MsgBoxStyle.YesNo, "Are you sure?")
If I = MsgBoxResult.Yes Then
conn.Open()
Dim cmd2 As New OleDb.OleDbCommand("DELETE FROM PRODUCT WHERE product_id = '" & ListView1.Items(ItemNo).SubItems(0).Text & "'", conn)
cmd2.ExecuteNonQuery()
MsgBox("Record removed successfully", MsgBoxStyle.OkOnly, "Remove Succeeded")
Else
Return
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
Refresh()
End Sub
【问题讨论】:
-
使用参数 - 否则
.Text属性中的撇号会破坏一切。 -
MsgBox("Record removed successfully"ExecuteNonQuery first 的返回值来验证是否删除了一行,而不是简单地假设它是成功的。 -
无关:您是否考虑过实施软删除?这样您可以撤消删除。
-
很可能,
ListView1.Items(ItemNo).SubItems(0).Text不包含您期望的值,或者product_id是一个数字,而不是文本。 -
如果有任何问题请分享错误信息。
标签: database vb.net ms-access crud