【问题标题】:Why is this very simple SQL query failing in MS Access?为什么这个非常简单的 SQL 查询在 MS Access 中失败?
【发布时间】:2011-06-03 16:14:12
【问题描述】:

我有一个问题,无论如何都不应该失败,但我终其一生都无法弄清楚原因

INSERT INTO Grocery_Store_Prices(Store,Item,Brand,Price,Unit,Quantity,Note) 
VALUES("Kroger","Cheesy Poof","Cartman",0.51,"fart",15,"what is going on");

当我尝试运行查询时,我收到“INSERT INTO 语句中的语法错误”,其中注释字段突出显示。如果我省略 Note 字段及其值,则查询可以正常工作。是否有一些非常明显的东西我错过了,或者这里隐藏着一个 Jet SQL 怪癖???

它作用的表是: Grocery_Store_Prices

  • ID -- 自动编号主键
  • 存储 -- 文本
  • 日期 -- 日期/时间
  • 项目 -- 文本
  • 品牌 -- 文字
  • 价格 -- 货币
  • 单位 -- 文本
  • 数量 -- 数字(双)
  • 注意——文本。

【问题讨论】:

    标签: sql ms-access jet jet-sql


    【解决方案1】:

    “注”是 Microsoft Access 中的保留字。你需要用方括号括起来:

    INSERT INTO Grocery_Store_Prices(Store,Item,Brand,Price,Unit,Quantity,[Note])
    VALUES("Kroger","Cheesy Poof","Cartman",0.51,"fart",15,"what the ____");
    

    有用的保留字列表:http://support.microsoft.com/kb/286335

    有些人认为最好始终将字段名称用方括号括起来,这样您就不必担心了。

    祝你好运!

    【讨论】:

    • 就可以了。呃,Jet SQL……我想我已经被使用更丰富的语法和更智能的处理的 DBMS 宠坏了。
    • 保留字在每个数据库中都是一个问题。问题是数据库接口如何为您处理它。不鼓励在所有数据库中使用保留字。不过,我想,如果 Access 告诉你保留字,那会很好。
    • @David-W-Fenton:保留字在我的数据库中不是问题,可能是因为我遵循ISO 11179 数据元素命名约定的精神。或者,我想知道,当您实际上是指 DBMS 时,您是在说“数据库”吗?
    【解决方案2】:

    注意是reserved word,因此请尝试重命名该列。

    【讨论】:

    • ...当然,它修复了它。知道这很简单。数字表明 Access 足够愚蠢,允许在命名字段中使用保留字而无需提示。
    • Access 过于适应不明智的对象名称选择,IMO。这肯定会让粗心的开发者自取其辱。
    • @HansUp——确实如此。这是我对 Access 最大的抱怨。正因为如此,我总是害怕被要求“继承”一个 Access 项目,除非我知道并信任我前面的开发人员。业余爱好者似乎总是偶然发现保留字,或者 - 更糟糕的是,恕我直言 - 在他们的字段名称中放置空格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多