SQL中的UPDATE命令的语法错误

Bre*_*ong 1 sql vb.net syntax ms-access

这个陈述有什么不妥吗?我发现它没有任何问题......

UPDATE AccountInfo
SET First Name = 'Test', Last Name = 'Account', Street = 'Street', State = 'State', ZipCode = 55555
WHERE id = 1
Run Code Online (Sandbox Code Playgroud)

我正在写一个VB程序,我正在实现一个编辑功能.这是问题代码.

        Public Function updateAccountInfo(ByVal cp As CPerson, ByVal fName As String, ByVal lName As String, ByVal address As String, ByVal state As String, ByVal zip As Integer) As Boolean
    Dim sql, sql2 As String
    sql = "UPDATE AccountInfo SET First Name = '" & fName & "', Last Name = '" & lName & "', Street = '" & address & _
        "', State = '" & state & "', ZipCode = " & zip & " WHERE id = " & cp.returnIDOnlyNumber
    sql2 = "UPDATE Accounts SET First Name = '" & fName & "', Last Name = '" & lName & "' WHERE id = " & cp.returnIDOnlyNumber
    Return do_command(sql, sql2)
End Function

Private Function do_command(ByVal sql As String, ByVal sql2 As String) As Boolean
        Dim command As OleDbCommand
        Try
            conn.Open()
            command = New OleDbCommand(sql, conn)
            command.ExecuteNonQuery()
            conn.Close()
            conn.Open()
            command = New OleDbCommand(sql2, conn)
            command.ExecuteNonQuery()
            conn.Close()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

是的,名字中有空格.如果你真的拥有它们,那么你需要逃脱它们,也许用方括号:

UPDATE AccountInfo
    SET [First Name] = 'Test', 
        [Last Name] = 'Account',
        Street = 'Street',
        State = 'State',
        ZipCode = '55555'
WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)

没有空格的名称最好.此外,邮政编码应存储为字符串,而不是数字,否则您将丢失前导零.