MySQL的例外是未处理 - 命令执行过程中遇到致命错误(MySql exception was u

2019-11-03 02:31发布

这个问题属于这个按钮下,我在这里得到的错误:

objcommand.ExecuteNonQuery()

一旦我按下这个按钮,它应该更新我的MySQL数据库中的所有记录。 这里是我的代码(确切的代码工作正常,另一个表):

Private Sub btnModify1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModify1.Click
    Using objconnection = New MySqlConnection("Server=localhost;database=ba-solutions;user id=root;password=")
        objconnection.Open()
        If Len(cbxCompanyName.Text) < 1 Then
            MsgBox("Please select a company name")
            Return
        End If

        If Len(txtPosition.Text) < 1 Then
            MsgBox("Please enter the postion of the shareholder in the company")
            Return
        End If

        If Len(txtNI.Text) <> 8 Then
            MsgBox("The National Insurance Number must be 8 characters")
            Return
        End If

        If Len(txtAddressLine.Text) < 1 Then
            MsgBox("Enter a First Line of Address")
            Return
        End If

        If Len(txtCity.Text) < 1 Then
            MsgBox("Enter a City Name")
            Return
        End If

        If Len(txtPostcode.Text) < 1 Then
            MsgBox("Enter a Postcode")
            Return
        End If

        If Len(txtEmail.Text) < 1 Then
            MsgBox("Enter an Email Address")
            Return
        End If

        If Len(txtPhoneNumber.Text) <> 11 Then
            MsgBox("The Phone Number must be 11 numbers ")
            Return
        End If
        'all validations for relevant textboxes
        Dim companyname As String
        Dim position As String
        Dim ninumber As String
        Dim dob As String
        Dim forename As String
        Dim surname As String
        Dim addressline1 As String
        Dim city As String
        Dim postcode As String
        Dim phonenumber As String
        Dim email As String
        postcode = txtPostcode.Text
        companyname = cbxCompanyName.Text
        position = txtPosition.Text
        ninumber = txtNI.Text
        dob = DTP1.Value
        forename = txtForename.Text
        surname = txtSurname.Text
        addressline1 = txtAddressLine.Text
        city = txtCity.Text
        phonenumber = txtPhoneNumber.Text
        email = txtEmail.Text
        sqlstring = "UPDATE shareholder_details SET position=@position, ni=@ninumber, dob=@dob, forename=@forename, surname=@surname, addressline1=@addressline, city=@city, postcode=@postcode, phonenumber=@phone, email=@email where companyname=  @company "
        objcommand = New MySqlCommand(sqlstring, objconnection)
        objcommand.Parameters.AddWithValue("@company", companyname)
        objcommand.Parameters.AddWithValue("@postion", position)
        objcommand.Parameters.AddWithValue("@ni", ninumber)
        objcommand.Parameters.AddWithValue("@dob", dob)
        objcommand.Parameters.AddWithValue("@forename", forename)
        objcommand.Parameters.AddWithValue("@surname", surname)
        objcommand.Parameters.AddWithValue("@addressline", addressline1)
        objcommand.Parameters.AddWithValue("@city", city)
        objcommand.Parameters.AddWithValue("@postcode", postcode)
        objcommand.Parameters.AddWithValue("@phone", phonenumber)
        objcommand.Parameters.AddWithValue("@email", email)
        objcommand.ExecuteNonQuery()

        btnRefresh.PerformClick()

        Dim check As Integer = objcommand.ExecuteReader.RecordsAffected
        If check < 1 Then
            MessageBox.Show("Record was not updated, please try again", "Update unsucessfull",
    MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show("Record updated sucessfully", "Update sucessfull",
    MessageBoxButtons.OK, MessageBoxIcon.Information)
            objconnection.Close()
        End If
    End Using
End Sub

Answer 1:

你写

objcommand.Parameters.AddWithValue("@postion", position)

但是这也许应该是

objcommand.Parameters.AddWithValue("@position", position)

其他问题可能是,
你有ni=@ninumber ,在SQL语句中,
但是你用objcommand.Parameters.AddWithValue("@ni", ninumber)在您的主机变量

在您的SQL语句,这看起来不同的companyname= @company相比,你的其他主机变量的使用

并可能尝试使用相同的顺序objcommand.Parameters.AddWithValue("@host_variable", variable) ,正如你在SQL语句中使用



Answer 2:

我使用的解决方案,它确实有效。 这个错误主要是由丢失或不正确拼写参数声明引起的。 例如。 @firstName误拼写为@FirtName。

请确保在SQL查询中声明的所有参数,在参数AddwithValue声明中的所有声明。 (它有助于计数查询兑Addwithvalues)。

最好的解决办法是为Visual Studio提供有关失踪的参数信息。 使用try-catch块。 在catch块使用Messagebox.show(ex.Innerexception.Message)代替Messagebox.show(ex.message)。 这将显示缺少确切的参数。 例如。 下面

尝试
conCommand.Parameters.Addwithvalue( “@姓”,txtFirstName.text)conCommand.Parameters.Addwithvalue( “@中间名”,txtMiddleName.text)conCommand.Parameters.Addwithvalue( “@名字”,txtLastName.text)conCommand.Parameters.Addwithvalue ( “@PhoneNo”,txtPhoneno.text)

赶上前作为例外
MessageBox.show(ex.innerexception.Message)
结束Try


希望这可以帮助。 它真是太棒了,我们分享我们在编程世界的想法。 谢谢阅读。

如果您需要更多的援助。 请与我联系上flashrescueagency@gmail.com。 我不是一个职业,但我有很多在Visual Studion(VB.NET),SQL客户端和MySQL客户端编程经验。



文章来源: MySql exception was unhandled - Fatal error encountered during command execution