Sql INTO 语句语法错误 VB.net OleDB

Sql syntax error with INTO statement VB.net OleDB

刚刚编辑了这个子例程,所以我现在可以保存语言和字体的值。

它以前工作得很好,但现在它给我一个 sql 字符串的语法错误。

    Sub insertuservalues(conn, a, b, c, d, e, f)
        Dim sql As String = "INSERT INTO tblUserDetails(Name,Username,[Password],Email,Language,Font) VALUES (@name, @username, @password, @email, @language, @font)"
        Using connection As New OleDbConnection(conn)
            Using command As New OleDbCommand(sql, connection)
                connection.Open()
                command.Parameters.Add("@name", OleDbType.VarWChar).Value = a
                command.Parameters.Add("@username", OleDbType.VarWChar).Value = b
                command.Parameters.Add("@password", OleDbType.VarWChar).Value = c
                command.Parameters.Add("@email", OleDbType.VarWChar).Value = d
                command.Parameters.Add("@language", OleDbType.VarWChar).Value = e
                command.Parameters.Add("@font", OleDbType.VarWChar).Value = f
                command.ExecuteNonQuery()
                connection.Close()
            End Using
        End Using
    End Sub

字段 LanguageFont 已添加到 table,并且所有传递的变量都具有有效值。为什么会这样?

这是SQL服务器吗?您应该为 DBMS 的问题添加一个标签。 但是既然你提到问题是在添加这两列之后开始的,那么列名很可能就是问题所在。

在 SQL 服务器中 Language 是一个 保留关键字 。请参阅列表:Reserved Keywords (Transact-SQL)。命名对象时避免保留关键字(或过于通用的关键字)。但是,如果您将列名称括在方括号之间(例如 [Password]),那应该可以。

我宁愿使用 user_languageuser_password 等名称(password 应该是 Mysql 中的保留关键字)。