在vb.net中更新数据库导致语法错误
我试图在用户修改数据库记录时更新它。我有一个名为“txtColsTextBox”的文本框,用于存储值和一个名为“btnSaveExit”的按钮。单击按钮,我需要用新值更新数据库 基于我的代码,我将如何做到这一点。我在想,我需要使用me.validate函数,但不确定如何编码。谢谢在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
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] = ?