[英]VB.net SQL Syntax
对于一些学校作业,我得到了源代码,以便更新访问数据库中的数据。 但是,当尝试使用它时,我实际上不知道正确的语法是什么。
这是更新它的源代码功能:
Sub UpdateData(ByVal dataToUpdate As String, ByVal updateCriteria As String)
'Assemble SQL query to update the specified record(s) with the specified value(s)
Dim sql As String = "UPDATE " & DBtable & " SET " & dataToUpdate & " WHERE " _
& updateCriteria
'Create an instance of data adapter (if not created already)
myDataAdapter = New OleDb.OleDbDataAdapter()
'Add command to update data (using data adaptor) based on SQL query above.
myDataAdapter.UpdateCommand = New OleDb.OleDbCommand(sql, myCon)
'Execute command to update data in the relevant database record(s)
myDataAdapter.UpdateCommand.ExecuteNonQuery()
MsgBox(sql)
End Sub
这就是我试图用来执行它的内容,但是语法不正确:
UpdateData("first_name = '" & Firstnamebox.Text & "' AND last_name = '" _
& Lastnamebox.Text & "' AND middle_name = '" & Middlenamebox.Text _
& "' AND age = '" & Agebox.Text & "' AND AdditionalInfo = '" & AddInfoBox.Text _
& "' AND User_level = '" & UserLevelBox.Text & "' AND username =' " _
& Usernamebox.Text & "' AND [password] = '" & Passwordbox.Text & "'",
"ID = '" & id & "'")
有什么想法我要去哪里吗?
谢谢,
您不需要数据适配器。 您只需要连接和命令。 还要确保连接已打开。 也许您在代码中的其他地方进行了此操作。
Dim command = New OleDb.OleDbCommand(sql, myCon)
myCon.Open()
command.ExecuteNonQuery()
UPDATE命令如下所示:
UPDATE myTable
SET col1 = value1, col2 = value2, col3 = value3, ...
WHERE ...
您正在与字符串连接一起使用SQL命令。 更好地使用命令参数。
UPDATE myTable
SET col1 = @1, col2 = @2, col3 = @3
WHERE ID = @4
Dim command = New OleDb.OleDbCommand(sql, myCon)
command.Parameters.AddWithValue("@1", value1)
command.Parameters.AddWithValue("@2", value2)
command.Parameters.AddWithValue("@3", value3)
command.Parameters.AddWithValue("@4", id)
myCon.Open()
command.ExecuteNonQuery()
这样做有几个优点:
您不必担心SQL数据的正确格式。 特别是日期值的格式可能很棘手。
包含字符串定界符的文本没有问题。
例如,它可防止您受到SQL注入攻击,在这种攻击中,黑客输入了讨厌的SQL语句而不是用户名。
更容易阅读。
将SQL语句中的AND
替换为逗号,
UpdateData("first_name = '" & Firstnamebox.Text & "', last_name = '" & Lastnamebox.Text & "', middle_name = '" & Middlenamebox.Text & "', age = " & Agebox.Text & ", AdditionalInfo = '" & AddInfoBox.Text & "', User_level = '" & UserLevelBox.Text & "', username =' " & Usernamebox.Text & "', [password] = '" & Passwordbox.Text & "'", "ID = '" & id & "'")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.