使用 .net 从 MS Access 数据库中删除不存在的记录

问题描述

以下函数从我的 MS Access 数据库删除该行。一切正常,只是如果我输入一个不存在的“txtRiskid.Text”,它会运行 else 语句。我怎么能在这个 if 语句中捕捉到这个,所以如果我输入一个不存在的“txtRiskid.Text”,它会通过消息告诉我它不存在,类似于我写的如果它被留下空。

删除按钮编码:

Private Sub Deletebtn_Click_1(sender As Object,e As EventArgs) Handles Deletebtn.Click
    If txtRiskid.Text = "" Then
        MsgBox("Please enter a existing 'Risk ID' to delete the specific record from the database","Warning")
    Else
        Dim Deletequery As String = "delete from Risk_Register where ID=@ID"
        Runquery(Deletequery)
        MsgBox("The record has been Deleted successfully from the database.","information")
    End If
End Sub

运行查询编码:

Public Sub Runquery(ByVal query As String)

    con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ahmed\OneDrive\Desktop\ProjectDatabase2003.mdb")
    Dim cmd As New OleDbCommand(query,con)

    cmd.Parameters.AddWithValue("@ID",txtRiskid.Text)
    cmd.Parameters.AddWithValue("@Risk_Name",txtRiskname.Text)
    cmd.Parameters.AddWithValue("@Risk_Description",txtRiskdescription.Text)
    cmd.Parameters.AddWithValue("@Owner",txtOwner.Text)
    cmd.Parameters.AddWithValue("@Control",txtControl.Text)
    cmd.Parameters.AddWithValue("@Probability",txtProbability.Text)
    cmd.Parameters.AddWithValue("@Impact",txtImpact.Text)
    cmd.Parameters.AddWithValue("@Risk_Level",txtRisklevel.Text)

    con.open()
    cmd.ExecuteNonQuery()
    con.Close()

End Sub

解决方法

ExecuteNonQuery() 返回受影响的行数见 https://docs.microsoft.com/en-us/dotnet/api/system.data.oledb.oledbcommand.executenonquery 从您的 Runquery 子程序返回它并检查 Deletebtn_Click_1 处理程序。

那种

Private Sub Deletebtn_Click_1(sender As Object,e As EventArgs) Handles Deletebtn.Click
    If txtRiskid.Text = "" Then
        MsgBox("Please enter a existing 'Risk ID' to delete the specific record from the database","Warning")
    Else
        Dim Deletequery As String = "delete from Risk_Register where ID=@ID"
        If Runquery(Deletequery) > 0 Then
            MsgBox("The record has been Deleted successfully from the database.","Information")
        Else
            MsgBox("The record doesn't exist in the database.","Information")
        End If
    End If
End Sub

Public Function Runquery(ByVal query As String) As Integer

    con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ahmed\OneDrive\Desktop\ProjectDatabase2003.mdb")
    Dim cmd As New OleDbCommand(query,con)
    Dim count As Integer
    cmd.Parameters.AddWithValue("@ID",txtRiskid.Text)
    cmd.Parameters.AddWithValue("@Risk_Name",txtRiskname.Text)
    cmd.Parameters.AddWithValue("@Risk_Description",txtRiskdescription.Text)
    cmd.Parameters.AddWithValue("@Owner",txtOwner.Text)
    cmd.Parameters.AddWithValue("@Control",txtControl.Text)
    cmd.Parameters.AddWithValue("@Probability",txtProbability.Text)
    cmd.Parameters.AddWithValue("@Impact",txtImpact.Text)
    cmd.Parameters.AddWithValue("@Risk_Level",txtRisklevel.Text)

    con.Open()
    count = cmd.ExecuteNonQuery()
    con.Close()
    Return count
End Function