繁体   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