【问题标题】:The select statement includes a reserved word c#select语句包含一个保留字c#
【发布时间】:2015-05-06 18:24:53
【问题描述】:

我的 c# 应用程序有问题,它使用的是 MYSQL 数据库,在哪里没有问题!但是当我将数据库更改为 MS 访问时,出现了这个问题: select 语句包含保留字或参数名称拼写错误或丢失,或标点符号不正确。

这是我的代码:

OleDbCommand cmd = new OleDbCommand("SELECT action.info, relation.id AS action FROM relation LEFT OUTER JOIN conditions ON relation.conditions_id = conditions.id LEFT OUTER JOIN situation ON relation.situation_id = situation.id LEFT OUTER JOIN car_type ON relation.car_id = car_type.id LEFT OUTER JOIN action ON relation.action_id = action.id LEFT OUTER JOIN signal AS signaal1 ON relation.signal_id = signaal1.id where car_type.info=@car_type" + string2 + "  ORDER BY conditions.id ASC", objConn);
            cmd.Parameters.AddWithValue("@car_type", radButton1.Text);

            OleDbDataReader dataReader = cmd.ExecuteReader();

执行最后一行时出现错误..! "OleDbDataReader dataReader = cmd.ExecuteReader();"

-------------------------已编辑 我通过在表名中添加“z”来更改表名,现在出现另一条消息:

【问题讨论】:

  • "action" 是保留字。您需要在它周围放置括号 [action] 或为该项目使用其他名称。
  • @GrantWinney:访问也不允许多个左连接?我似乎记得它需要围绕连续连接的括号。
  • 我永远不会使用相同的名称(无论是否保留字)作为字段表达式的别名和表名。上面的查询包括SELECT relation.id AS action 和后来的LEFT OUTER JOIN action。没有声称这会导致错误,但对我来说似乎是错误的。 :-(
  • @HansUp 我同意,并且会在 SQL 中始终避免使用像 relationconditionaction 这样的词。我试图让我所有的别名都可读但不是一个实际的词。我会使用relscondthisaction
  • 只是支持 Andomar 的声明,即 MSAccess 需要在连续连接周围加上括号。形式为FROM (((a LJ B) LJ c) LJ d)

标签: c# mysql sql database ms-access


【解决方案1】:

Thanx @Grant_Winney,我改变了动作和关系,错误消失了:D但另一个出现了:s(我问了另一个问题)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2016-03-18
    • 1970-01-01
    • 2011-06-09
    • 2013-10-18
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多