(我编写VB.NET并使用ms access 2016作为数据库)
我执行此查询但没有任何反应。我想知道什么是错的。我运行时没有错误。我调试了它,变量中的所有值也是正确的。
我的数据库也没有发生变化
If Not (TextBoxID.Text = "" Or TextBoxNama.Text = "") Then
Try
Dim sqlquery As String = "UPDATE tblEmployees SET Nama = @nama WHERE IDEmployee = @ide"
Dim sqlcommand As New OleDbCommand
With sqlcommand
.CommandText = sqlquery
.Parameters.AddWithValue("@ide", TextBoxID.Text)
.Parameters.AddWithValue("@nama", TextBoxNama.Text)
.Connection = FormMain.conn
.ExecuteNonQuery()
End With
ButtonEdit.Text = "EDIT"
ButtonEdit.Image = My.Resources.edit
GroupBox1.Enabled = False
ButtonNew.Enabled = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
Else
MsgBox("Data cannot be empty!")
End If
问题是MS Access没有命名参数 - 而是位置参数。
因此,您必须按照它们在SQL语句中出现的正确顺序指定参数。你现在没做到。
将您的代码更改为:
If Not (TextBoxID.Text = "" Or TextBoxNama.Text = "") Then
Try
Dim sqlquery As String = "UPDATE tblEmployees SET Nama = @nama WHERE IDEmployee = @ide"
Dim sqlcommand As New OleDbCommand
With sqlcommand
.CommandText = sqlquery
.Parameters.AddWithValue("@nama", TextBoxNama.Text)
.Parameters.AddWithValue("@ide", TextBoxID.Text)
.Connection = FormMain.conn
.ExecuteNonQuery()
在设置@nama
的值之前,必须首先设置@ide
的值,因为这是这些参数在MS Access SQL语句中出现的顺序。