更新查询不起作用但没有错误

问题描述 投票:1回答:1

(我编写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
sql vb.net ms-access
1个回答
3
投票

问题是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语句中出现的顺序。

© www.soinside.com 2019 - 2024. All rights reserved.