用于删除信息的删除按钮不起作用

时间:2018-06-08 12:31:46

标签: vb.net ms-access

目前我正在尝试使用我的解决方案从ms访问中删除数据,但它目前无法正常工作。我在按钮删除时列出了消息框,但它没有显示,并且在我启动它时没有显示任何错误。这是代码:

 MessageBox.Show("Are You Sure You Want To Delete?", "Deletion",_
                 MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If DialogResult.Yes Then
        Function1()

        UserHomepage.Show()
        Me.Hide()
    ElseIf DialogResult.No Then
        Me.Show()
        UserHomepage.Hide()
        lblname.Hide()
        txtsid.ResetText()
    End If


    cmdDelete.CommandText = "Delete from student where student_id = " + txtsid.Text + ";"
    cmdDelete.CommandType = CommandType.Text
    cmdDelete.Connection = cnnOLEDB
    cmdDelete.ExecuteNonQuery()

这是针对功能1 ^

1 个答案:

答案 0 :(得分:0)

  1. 我们需要知道代码所处的事件,以了解为什么没有被调用。我把它放在一个按钮中,点击时调用代码。
  2. 如果您希望消息框中的结果设置变量来保存结果。然后根据DialogResult枚举值测试结果。在您的情况下,您只有Yes或No,因此您不需要测试第二个条件(DialogResult.No)只使用其他。
  3. 我不知道Function1是什么或为什么要调用它。将变量,函数和子命名为它们意味着什么。
  4. 你从一个神秘的地方得到了联系。我不知道它是否是一个开放的连接(我希望不是!)。
  5. 使用... EndUsing语句可确保即使出现错误也能正确关闭和处理对象。关闭连接非常重要。
  6. 您可以在Command的构造函数中设置Command对象的.Text属性和.Connection属性。
  7. 连接字符串时使用&不是+。这可以避免代码混淆。
  8. 但是,永远不要在SQL字符串中使用连接。您可能会收到来自用户的恶意输入。始终使用参数。 Access不关心你所谓的参数。 Access只关心它们的添加顺序。这里没关系,因为我们只有一个参数。
  9. 执行命令需要打开连接。
  10. 尽快关闭您的连接。
  11. `

     Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
                Dim dr As DialogResult = MessageBox.Show("Are You Sure You Want To Delete?", "Deletion",
                         MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If dr = DialogResult.Yes Then
                    Using cnnOLEDB As New OleDb.OleDbConnection("Your connection string")
                        Using cmdDelete As New OleDbCommand("Delete from student where student_id = @ID;", cnnOLEDB)
                            cmdDelete.CommandType = CommandType.Text
                            cmdDelete.Parameters.Add("@ID", OleDbType.Integer).Value = txtsid.Text
                            cnnOLEDB.Open()
                            cmdDelete.ExecuteNonQuery()
                            cnnOLEDB.Close()
                        End Using
                    End Using
                    UserHomepage.Show()
                    Me.Hide()
                Else
                    Me.Show()
                    UserHomepage.Hide()
                    lblname.Hide()
                    txtsid.ResetText()
                End If
            End Sub`