gpt4 book ai didi

c# - 适用于 SQL 数据库的 SQL 语句不适用于 Access 数据库

转载 作者:太空狗 更新时间:2023-10-30 00:43:17 24 4
gpt4 key购买 nike

我正在用 C# 创建一个 GUI,我有以下代码行来获取从 lowerPageBound 到 upperPageBound 的元素。

command.CommandText = "Select Top " + rowsPerPage + " " +
CommaSeparatedListOfColumnNames + " From " + tableName +
" WHERE " + columnToSortBy + " NOT IN (SELECT TOP " +
lowerPageBoundary + " " + columnToSortBy + " From " +
tableName + " Order By " + columnToSortBy +
") Order By " + columnToSortBy;
adapter.SelectCommand = command;
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
adapter.Fill(table);

生成的 SQL 语句在 access 数据库上使用时给我一个错误(adapter.Fill(table) 被执行),但在 sql 数据库上工作正常。

这是生成的 SQL:

Select Top 25 [ID], [Business Process], [Tier Level], [Application], [CI ID], [Server], [Server Function], [Data Center], [HA], [DR Equip], [Procedure], [Procedure Tested], [Type], [Outcome], [Overall Status] From Data WHERE ID NOT IN (SELECT TOP 0 ID FROM Data ORDER BY ID) ORDER BY ID;

我收到的错误:

Syntax error in query expression 'ID NOT IN (SELECT TOP 0 ID FROM Data ORDER BY ID)'.

我花了好几个小时试图解决这个问题,但一直没有成功。为什么相同的语句不能在 Access 数据库上工作是没有意义的。感谢您的帮助!!

最佳答案

Access 数据库引擎将针对您的这部分查询抛出错误。

SELECT TOP 0 ID FROM Data ORDER BY ID

您可以拆分该部分并将其作为新的 Access 查询进行测试。不幸的是,错误消息不是很有用:“SELECT 语句包含一个保留字或一个拼写错误或丢失的参数名称,或者标点符号不正确。”这是一种通用错误消息当无法准确描述问题时,数据库引擎会为您提供帮助。

基本上,这一切都归结为您不能在 Access SQL 中执行 SELECT TOP 0 的事实。

此外,一旦您解决了关于 SELECT TOP 0 的问题,您就需要在外部查询中使用一个 ORDER BY 子句。如果没有 ORDER BYTOP 25 返回的行是任意的。

关于c# - 适用于 SQL 数据库的 SQL 语句不适用于 Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com