0

我已经为我的 access 数据库构建了一个复杂的查询,并且在 access 中它就像一个魅力。但是当我尝试通过 OleDB 在我的程序中运行相同的查询时,我得到了异常“连接操作中的语法错误”。没有进一步的信息。

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 >= ?;

就我认为它仍然具有代表性而言,我已将查询分解。我使用子选择而不是直接连接的原因是我需要多次连接到我的键值表以将不同的键放入不同的列中。我无法让它以任何其他方式工作。

我正在使用 C# 2.0 和 Visual Studio 2008,以防万一。

4

2 回答 2

1

发现了问题。我输入查询的方式打破了它......

编辑:如您所见,我将查询分布在多行上,因此更易于阅读。当我将它粘贴到我的源代码中时,发生了这种情况:

"SELECT FooField" +
"FROM BarTable;";

这导致“SELECT FooFieldFROM BarTable;” - 所以显然不是有效的语法,这很痛苦。只是我一开始没有意识到...

于 2010-09-20T11:59:36.690 回答
0

这无疑是一个令人困惑的信息。有什么问题是多余的逗号:

D0.Value AS ["Value"],  <-- here

我希望这些名称不是真正的字段(列)名称,因为 Value 和 Time 是保留字,会导致无穷无尽的问题。我建议至少将它们括在方括号中,如果它们是真实姓名的话。

于 2010-09-20T10:09:33.620 回答