C# 使用c在sqlite表中分页#

C# 使用c在sqlite表中分页#,c#,sql,sqlite,C#,Sql,Sqlite,我试图翻阅这个表,所以我最终得到了这个查询(它不起作用) 请注意:我看到了,但这是我想得到第一个和最后一个值的唯一方法 如何有效地在该表中分页?您的查询不起作用,因为SQL中的Min(Column)和Max(Column)返回所有行的求值(聚合),因此不知道问题中非聚合查询中的每一行的值 如果确实需要最小值和最大值,可以在单独的select语句中返回它们,这样数据集就有3个表(如果使用ADO) 但是,分页通常应该像下面的情况那样实现(注意,orderby应该使查询具有确定性,因此每次都返回相同的

我试图翻阅这个表,所以我最终得到了这个查询(它不起作用)

请注意:我看到了,但这是我想得到第一个和最后一个值的唯一方法


如何有效地在该表中分页?

您的查询不起作用,因为SQL中的
Min(Column)
Max(Column)
返回所有行的求值(聚合),因此不知道问题中非聚合查询中的每一行的值

如果确实需要最小值和最大值,可以在单独的select语句中返回它们,这样数据集就有3个表(如果使用ADO)

但是,分页通常应该像下面的情况那样实现(注意,orderby应该使查询具有确定性,因此每次都返回相同的结果)

其中,
{5}
是页面大小,
{6}
页码*页面大小

很抱歉,如果这不能回答您的问题,那么不清楚您首先想要什么和最后想要什么。页面编号和大小通常由UI跟踪。此外,我还没有在SQLite中测试上述内容


如果您使用类似
String.Format()
的东西来构建查询,那么上面发布的代码可能会受到攻击。考虑改变这一点。

这个查询没有意义。您打算在第一页和下一页对
{0}
{1}
使用什么值?0和表示最大int值的值第一个和最后一个值是第一行和最后一行返回的值。
SELECT MIN(user_uid) AS FIRST,
MAX(user_uid) AS LAST,
user_number, user_name
FROM user_table
WHERE user_uid > MAX(FIRST,{0}) AND user_uid < MIN(LAST,{1})
AND ( user_name LIKE '%{2}%' OR user_number LIKE '%{3}%' )
AND user_category={4} OR user_category={5}
ORDER BY user_uid LIMIT {6}
CREATE INDEX idx1 ON user_table (user_uid);
SELECT
user_number, 
user_name
FROM user_table
WHERE ( user_name LIKE '%{1}%' OR user_number LIKE '%{2}%' )
AND user_category={3} OR user_category={4}
ORDER BY user_uid LIMIT {5} OFFSET {6}