【问题标题】:Syntax error when inserting ID, timestamp and string into Access database将 ID、时间戳和字符串插入 Access 数据库时出现语法错误
【发布时间】:2014-07-01 16:38:08
【问题描述】:

谁能告诉我为什么这段代码会抛出语法错误? :

commText = "INSERT INTO Messages VALUES (" & (recordsQty + 1) & "," & currentUserID & ",#" & Now & "#, '" & messageText & "')"
conn.Open connStr
conn.Execute commText
conn.Close()

我要插入的表如下:

ID Number PK
userID Number FK
messageDate Date/Time
messageText Text

最后,代码抛出了这个错误:

Script error detected at line 20.
Source line: conn.execute commText
Description: Syntax error in INSERT INTO statement.

提前致谢!

【问题讨论】:

  • 谢谢大家,它现在正在工作。我不知道是什么引发了错误 - 主题标签和单引号一样,我猜这些字段必须明确指定......
  • 一般建议:不要通过字符串连接构建 SQL 查询。 永远。改用parametrized queries(AKA 准备好的语句)。

标签: sql ms-access syntax vbscript


【解决方案1】:

如果您的 ID 字段设置为自增,则无需在 where 子句中指定。

commText = "INSERT INTO Messages VALUES (" & currentUserID & ",#" & Now & "#, '" & messageText & "')"

您还需要确保 currentUserID 存在于外键的表中

【讨论】:

  • commText = "INSERT INTO Messages VALUES (" & currentUserID & ",#" & Now & "#, '" & messageText & "')" 将失败,您必须明确列出列。
  • @LIUFA - 如果主键未设置为自动递增,它将失败。否则它应该可以正常访问,因为 ID 字段是自动生成的
【解决方案2】:
commText = "INSERT INTO Messages (userID, messageDate, messageText) " & _
           "VALUES (" & currentUserID & ", #" & Now & "#, '" & messageText & "')"

或者如果你的主键不是自动递增的:

commText = "INSERT INTO Messages (ID, userID, messageDate, messageText) " & _
           "VALUES (" & (recordsQty + 1) & ", "  & currentUserID & ", #" & Now & "#, '" & messageText & "')"

【讨论】:

    【解决方案3】:

    Swagata 是正确的,您不需要指定自动列,但是如果它们与您插入到结构中的表不完全匹配,则需要明确指定列。

    commText = "INSERT INTO Messages (UserId, messageDate, messageText  ) VALUES (" & currentUserID & ",#" & Now & "#, '" & messageText & "')"
    

    【讨论】:

      【解决方案4】:

      尝试用单引号替换您的主题标签。

      commText = "INSERT INTO Messages VALUES (" & (recordsQty + 1) & "," & currentUserID & ",'" & Now & "', '" & messageText & "')"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 2018-05-04
        • 1970-01-01
        相关资源
        最近更新 更多