【问题标题】:Sql syntax error with INTO statement VB.net OleDBINTO语句VB.net OleDB的Sql语法错误
【发布时间】:2020-05-06 20:57:16
【问题描述】:

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

以前它工作得很好,但现在它给我一个 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 已添加到表中,并且所有传递的变量都有一个有效值。为什么会这样?

【问题讨论】:

    标签: vb.net oledb


    【解决方案1】:

    这是 SQL Server 吗?您应该为您的 DBMS 问题添加一个标签。 但是由于您提到问题是在添加这两列之后开始的,所以很可能是列名是问题所在。

    在 SQL Server 中,Language 是一个保留关键字。查看列表:Reserved Keywords (Transact-SQL)。命名对象时避免保留关键字(或过于通用的关键字)。但是,如果您将列名括在方括号中(如[Password]),那应该可以工作。

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

    【讨论】:

    • 可能是 Access,但无论如何您的建议都是有效的。
    • 不是服务器,只是访问。但我确实有一种感觉,语言可以是一个关键词。现在一切都说得通了。谢谢。
    猜你喜欢
    • 2015-02-15
    • 2013-08-15
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多