C# 分析查询时出错。[令牌行编号=1,令牌行偏移量=39,令牌出错=(]

C# 分析查询时出错。[令牌行编号=1,令牌行偏移量=39,令牌出错=(],c#,sql-server,winforms,sqlcedatareader,C#,Sql Server,Winforms,Sqlcedatareader,我在WinForms应用程序中工作。我的要求是按需从sql加载数据(即,当移动到某个页面时,为该页面加载100条记录)。因此我尝试在SqlCommand下面执行,但它在下面命令中的“ROW_NUMBER()”语法处引发异常 SELECT * FROM (SELECT * , ROW_NUMBER() (ORDER BY [ID]) AS RowNum FROM [tblVGTest] WHERE [ID]) AS Temp WHERE RowNum B

我在WinForms应用程序中工作。我的要求是按需从sql加载数据(即,当移动到某个页面时,为该页面加载100条记录)。因此我尝试在SqlCommand下面执行,但它在下面命令中的“ROW_NUMBER()”语法处引发异常

SELECT * 
FROM (SELECT *
      , ROW_NUMBER() (ORDER BY [ID]) AS RowNum 
      FROM [tblVGTest] 
      WHERE [ID]) AS Temp 
WHERE RowNum BETWEEN 0 AND 100
请让我知道,是否有任何错误的指挥或提供任何建议,我的情况


谢谢

您忘记了在
行号中使用
OVER()
子句

尝试以下查询

SELECT * FROM (SELECT * , ROW_NUMBER() OVER (ORDER BY [ID]) AS RowNum 
  FROM [tblVGTest] ) AS Temp WHERE RowNum BETWEEN 0 AND 100

我已经从中删除了
WHERE
子句,因为它没有任何标准。如果需要,您可以放置它。

如果您使用SQL Server Compact 4.0,您可以使用OFFSET/fetch语法:

SELECT * FROM TransactionHistory   
ORDER BY TransactionDate DESC
OFFSET 0 ROWS FETCH NEXT 100 ROWS ONLY;

是mysql吗?看起来SQL Server(mssql)的查询完全错误。
ORDER BY
子句总是在
WHERE
子句之后。
WHERE
在您的查询中没有任何条件。只有
WHERE[ID]意味着什么
?您好@Chetan,谢谢您的建议。我已经按照您所说的做了尝试,但仍然得到了相同的异常。这种情况还有其他可能性吗?没有其他可能性。这是一个语法错误。我在本地数据库上运行了上述查询,只更改了表名,我得到了完美的输出。我在SQL Server数据库上运行了此查询。您使用了吗正在删除其他数据库?是否尝试在Sql Management Studio中运行查询。我建议从此处复制查询,粘贴到查询窗口并运行它。您好@Chetan,谢谢。我没有在Sql Management Studio中尝试过。我使用了(.sdf)文件,并通过SqlCeConnection和SqlCeAdapter.Ok读取其中的值。如果您使用的是SQL Server Compact Edition,则新闻是SQL Server Compact Edition中没有行号()。您需要使用
SqlCeResultSet.Seek()
用于分页。您好@Chetan,谢谢您提供的信息。您是否提供使用SqlCeResultSet.Seek()从SDF文件中选择100条记录的论坛或文档。我已经搜索过了,但无法获得有关如何使用SqlCeResultSet.Seek()的确切详细信息