【问题标题】:Update Query Doesn't Work But No Error更新查询不起作用但没有错误
【发布时间】:2018-03-04 12:17:13
【问题描述】:

(我用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】:

    问题在于 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中出现的顺序访问 SQL 语句。

    【讨论】:

      猜你喜欢
      • 2022-08-06
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      相关资源
      最近更新 更多