簡體   English   中英

VB.net SQL語法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM