[英]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.