大家好日子。我想请求帮助我的代码来更新数据库中的特定记录。我的后端是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
答案 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