在vb.net中更新数据库导致语法错误

在vb.net中更新数据库导致语法错误,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我试图在用户修改数据库记录时更新它。我有一个名为“txtColsTextBox”的文本框,用于存储值和一个名为“btnSaveExit”的按钮。单击按钮,我需要用新值更新数据库 基于我的代码,我将如何做到这一点。我在想,我需要使用me.validate函数,但不确定如何编码。谢谢 Dim connetionString As String Dim oledbCnn As OleDbConnection Dim oledbCmd As OleDbCommand Dim sql As String

我试图在用户修改数据库记录时更新它。我有一个名为“txtColsTextBox”的文本框,用于存储值和一个名为“btnSaveExit”的按钮。单击按钮,我需要用新值更新数据库

基于我的代码,我将如何做到这一点。我在想,我需要使用me.validate函数,但不确定如何编码。谢谢

Dim connetionString As String
Dim oledbCnn As OleDbConnection
Dim oledbCmd As OleDbCommand
Dim sql As String

connetionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\domain\storage.accdb"
sql = "SELECT Cols FROM Racks Where [Rack code] = '" & buttonName & "'"
    oledbCnn = New OleDbConnection(connetionString)
Try
    oledbCnn.Open()
    oledbCmd = New OleDbCommand(sql, oledbCnn)
    Dim oledbReader As OleDbDataReader = oledbCmd.ExecuteReader()
    While oledbReader.Read
        'MsgBox(oledbReader.Item(0))
        txtColsTextBox.Text = oledbReader.Item(0)
    End While
    oledbReader.Close()
    oledbCmd.Dispose()
    oledbCnn.Close()
Catch ex As Exception
    MsgBox(ex.Message)
End Try
编辑:更新数据库的代码

Private Sub btnSaveExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveExit.Click
        Try
            connetionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=C:\domain\storage.accdb"

            oledbCnn.Open()
            oledbCmd = New OleDbCommand(sql, oledbCnn)
            oledbCmd.CommandText = "UPDATE [Racks] SET [Cols] VALUES (?)"
            oledbCmd.Parameters.AddWithValue("@Cols", txtColsTextBox.Text)
            oledbCmd.ExecuteNonQuery()

            MessageBox.Show("Record succesfully updated" + txtColsTextBox.Text)

        Catch ex As Exception
            MessageBox.Show(ex.Message)

        End Try
    End Sub

要显示您将要开始,可以使用如下内容(调整表名、字段名和参数)


将UPDATE语句更改为以下形式:

UPDATE [Racks] SET [Col1] = ?, [Col2] = ? WHERE [IdCol] = ?

该示例假设您希望使用新值更新Col1和Col2,并且只更新一条记录(其中IdCol等于id)。按照与UPDATE语句中的顺序相对应的顺序添加参数。

请参阅根据您的示例修改的代码,该示例给出了UPDATE语句中的语法错误。我编写了插入语法,它基本上是插入到TABLENAME(fieldlist)值(valuelist)中。更新语法不同:更新TABLENAME SET fielname1=value1,fieldname2=value2。。。。WHERE子句(非常重要,因为省略WHERE子句会更新每个记录。)为什么不在第一个示例中使用查询参数?另外,
oledbCnn.Close()
应该在finally块中。
UPDATE [Racks] SET [Col1] = ?, [Col2] = ? WHERE [IdCol] = ?