【发布时间】: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 中始终避免使用像
relation、condition和action这样的词。我试图让我所有的别名都可读但不是一个实际的词。我会使用rels、cond或thisaction。 -
只是支持 Andomar 的声明,即 MSAccess 需要在连续连接周围加上括号。形式为
FROM (((a LJ B) LJ c) LJ d)
标签: c# mysql sql database ms-access