VB.NET UPDATE方法

时间:2012-09-05 04:46:43

标签: vb.net

大家好日子。我想请求帮助我的代码来更新数据库中的特定记录。我的后端是Microsoft Access,前端是Visual Basic。它给出了一个错误“没有给出一个或多个必需参数的值”。另外,我收到一个关于“对象引用未设置为对象实例”的问题。

这是我的代码。谢谢:))

    Private Sub UpdateClient()

    Dim sqlUpdateClient As String = "UPDATE tblClient SET clientCompany = @clientCompany, clientStreetAddress = @clientStreetAddress, clientCity = @clientCity, clientContactPerson = @clientContactPerson, clientContactNumber = @clientContactNumber, clientEmail = @clientEmail, clientMobileNumber = @clientMobileNumber WHERE clientID = " + selectedClient
    Dim recordsAffected As Integer = 0
    Dim accessCommand As New OleDbCommand(sqlUpdateClient, accessConnection)
    accessCommand.CommandText = sqlUpdateClient

    accessCommand.Parameters.AddWithValue("@clientCompany", txtClientCompany.Text)
    accessCommand.Parameters.AddWithValue("@clientStreetAddress", txtClientStreetAddress.Text)
    accessCommand.Parameters.AddWithValue("@clientCity", txtClientCity.Text)
    accessCommand.Parameters.AddWithValue("@clientContactPerson", txtClientContactPerson.Text)
    accessCommand.Parameters.AddWithValue("@clientContactNumber", txtClientPhoneNumber.Text)
    accessCommand.Parameters.AddWithValue("@clientEmail", txtClientEmailAddress.Text)
    accessCommand.Parameters.AddWithValue("@clientMobileNumber", txtClientMobileNumber.Text)

    Try

        accessConnection.Open()
        recordsAffected = accessCommand.ExecuteNonQuery

    Catch ex As Exception

        lblError.Text = ex.ToString

    Finally

        accessConnection.Close()

    End Try

    If recordsAffected = 0 Then
        MsgBox("Record updated failed!", MsgBoxStyle.Exclamation, "Project Analysis System")
    Else
        MsgBox("Record updated successfully!", MsgBoxStyle.Information, "Project Analysis System")
        PopulateClientList()
    End If

End Sub

1 个答案:

答案 0 :(得分:1)

accessConnection是全局(连接对象)变量吗?您必须在该过程上创建该对象的另一个实例。

还有一件事,clientID也是参数化的。然后添加这一行

accessCommand.Parameters.AddWithValue("@clientID", selectedClient)

更新1

Private Sub UpdateClient()

    Dim recordsAffected As Integer = 0
    Dim sqlUpdateClient As String = "UPDATE tblClient " & _
                                    "SET clientCompany = ?, " & _
                                    "   clientStreetAddress = ?, " & _
                                    "   clientCity = ?, " & _
                                    "   clientContactPerson = ?, " & _
                                    "   clientContactNumber = ?, " & _
                                    "   clientEmail = ?, " & _
                                    "   clientMobileNumber = ? " & _
                                    "WHERE clientID = ?"

    Using accessConnection As New OleDbConnection("connectionStringHere")
        Using accessCommand As New OleDbCommand()
            With accessCommand
                .Connection = accessConnection
                .CommandType = CommandType.Text
                .CommandText = sqlUpdateClient
                .Parameters.AddWithValue("clientCompany", txtClientCompany.Text)
                .Parameters.AddWithValue("clientStreetAddress", txtClientStreetAddress.Text)
                .Parameters.AddWithValue("clientCity", txtClientCity.Text)
                .Parameters.AddWithValue("clientContactPerson", txtClientContactPerson.Text)
                .Parameters.AddWithValue("clientContactNumber", txtClientPhoneNumber.Text)
                .Parameters.AddWithValue("clientEmail", txtClientEmailAddress.Text)
                .Parameters.AddWithValue("clientMobileNumber", txtClientMobileNumber.Text)
                .Parameters.AddWithValue("clientID", selectedClient)
            End With
            Try
                accessConnection.Open()
                recordsAffected = accessCommand.ExecuteNonQuery()
            Catch ex As OleDBException
                lblError.Text = ex.Message.ToString()
            Finally
                accessConnection.Close()
            End Try

            If recordsAffected = 0 Then
                MsgBox("Record updated failed!", MsgBoxStyle.Exclamation, "Project Analysis System")
            Else
                MsgBox("Record updated successfully!", MsgBoxStyle.Information, "Project Analysis System")
                PopulateClientList()
            End If
        End Using
    End Using

End Sub

enter image description here