.net OleDB+Jet:联接操作中出现语法错误
我已经为access数据库构建了一个复杂的查询,在access中,它就像一个符咒。但是,当我试图通过OleDB在程序中运行相同的查询时,在Join操作中会出现异常语法错误。没有进一步的信息.net OleDB+Jet:联接操作中出现语法错误,.net,ms-access,oledb,oledbexception,.net,Ms Access,Oledb,Oledbexception,我已经为access数据库构建了一个复杂的查询,在access中,它就像一个符咒。但是,当我试图通过OleDB在程序中运行相同的查询时,在Join操作中会出现异常语法错误。没有进一步的信息 SELECT MainTable.Main_dbID, D0.Kvp_Value AS ["Value"] FROM (MainTable INNER JOIN ( SELECT Main_dbID, Kvp_Value FROM KVPTable WHERE Kvp_
SELECT
MainTable.Main_dbID,
D0.Kvp_Value AS ["Value"]
FROM (MainTable
INNER JOIN (
SELECT Main_dbID, Kvp_Value
FROM KVPTable
WHERE Kvp_Code IN (1, 2, 4)
) AS D0
ON D0.Main_dbID = MainTable.Main_dbID)
WHERE Main_Time <= ? AND Main_Time >= ?;
我已经把这个问题分解了,因为我觉得它仍然具有代表性。我之所以使用subselect而不是直接联接,是因为我需要多次联接到键值表,以便将不同的键放入不同的列中。我没办法用别的方法
我正在使用C2.0和Visual Studio 2008,以防出现相关问题。这无疑是一条令人困惑的信息。错的是多余的逗号:
D0.Value AS ["Value"], <-- here
我希望这些名称不是真正的字段列名,因为值和时间是保留字,将导致无休止的问题。如果他们是真名,我建议至少用方括号括起来。发现了问题。我输入查询的方式打破了它 编辑:如您所见,我将查询分布在多行上,因此它更易于阅读。当我将其粘贴到源代码中时,发生了以下情况:
"SELECT FooField" +
"FROM BarTable;";
这将导致从BarTable中选择FooField;-显然,这不是有效的语法,这很痛苦。我只是一开始没意识到…谢谢你指出这一点。我简化查询时犯了一些错误。现在应该修复,以便出现真正的问题…我已经在c中尝试了sql,它对我有效,除了时间问题,首先,我不相信你的意思是:Main_time=?为什么不告诉我们是什么具体破坏了它?