C# 在SQLite表中穿行

C# 在SQLite表中穿行,c#,database,sqlite,select,C#,Database,Sqlite,Select,我想实现或使用允许在SQLite中单步遍历表的功能 如果我有一个表Products,它有10万行,我希望一次检索大约10万行。类似于网页如何列出数据并有一个链接浏览数据 是否有select语句可以简化此操作?我看到并尝试将ROWID与LIMIT结合使用,如果不对数据进行排序,这似乎是可以的 //如果不订购,这似乎有效 SELECT * FROM Products WHERE ROWID BETWEEN x AND y; 你在找什么?SQLite支持这些。然后,您可以使用SQLite也支持的 编

我想实现或使用允许在SQLite中单步遍历表的功能

如果我有一个表
Products
,它有10万行,我希望一次检索大约10万行。类似于网页如何列出数据并有一个
链接浏览数据

是否有select语句可以简化此操作?我看到并尝试将ROWID与LIMIT结合使用,如果不对数据进行排序,这似乎是可以的

//如果不订购,这似乎有效

SELECT * FROM Products WHERE ROWID BETWEEN x AND y;
你在找什么?SQLite支持这些。然后,您可以使用SQLite也支持的 编辑:要详细说明,您可以执行如下操作:


按名称从产品订单中选择*限制10000偏移10000;



这将从表中获取第二个10k页面,按名称排序。在处理“限制/偏移”和“排序依据”时,请注意性能问题。

如果您对行进行排序,会发生什么情况?如果未明确指定,ROWID仍然可用,但不会被视为静态。也就是说,隐式ROWID将由行在表中的物理写入顺序决定。因此,如果表是按名称顺序存储的,而我想按数量顺序存储,则ROWID将不表示返回的订单,而是表示隐式的行号。您确实应该在SQL工作中尽可能避免使用任何内置ROWID。它实际上不是SQL标准的一部分,它是一个附加组件,不能保证在大多数RDBMS上都存在。我将使用ORDERBY子句来创建排序。我发现,大多数查询都可以不依赖隐式的行号编写,只需要一点想象力。您需要对行进行排序吗?听起来你不必这么做。如果您使用了SB的答案,那么您可以按照SQLite默认返回数据的顺序进行操作。@sheepsimulator:我同意,我过去从未使用过它(因为如果有必要的话,最好创建显式的)。但是,我想不出任何其他方法来访问特定范围的行。LIMIT+OFFSET可以很好地实现这一点,我只是没有意识到它是可用的。您可以在代码中使用此查询,并将传递到OFFSET中的值设置为参数化值,对于所需的每一个记录块,该值可以递增10k。谢谢,这正是我要查找的。