我有一个通用方法,可以在计划任务中运行查询,如下所示:
public static DataSet ExecuteQuery(string strQuery)
{
DataSet ds = new DataSet();
using (MySqlConnection mySqlConnection = new MySqlConnection("server=localhost;uid=root;database=sampleDB"))
{
mySqlConnection.Open();
using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(strQuery, mySqlConnection))
{
dataAdapter.TableMappings.Add("Table", "data");
dataAdapter.Fill(ds);
}
mySqlConnection.Close();
}
return ds;
}
要使用它,我可以从任务内部调用它,如下所示:
DataSet results = DataConnection.ExecuteQuery("SELECT * from appointments");
我一直在寻找一种对结果分页的方法,但我能找到的每个解决方案都使用数据网格和按钮在页面之间导航。
我尝试使用这个页面的扩展:linq和pagination,但是在结果被添加到列表之后,它似乎需要进一步的下游,此时mysql查询已经被执行,并且可能返回数十万个结果存储在内存中。
我还是想用同样的简单调用来结束这个过程,但将它改为:
DataSet results = DataConnection.ExecuteQuery("SELECT * from appointments", 1, 50);
1条答案
按热度按时间bvjxkvbb1#
我想你找错地方了。如果您实际上谈论的是“数十万条记录”,则不应在代码级别对此进行分页。在mysql表中应该有一个主键,或者一个索引字段,您可以根据该字段简单地分页。
您应该通过过滤记录来查询所需的记录量,这在数据库端(查询特定的数据块,从而减少查找和搜索)和客户端(为返回的对象分配内存)都是有效的。
实施:
1) 检查您是否有id,如果没有您可以添加一个使用自动递增功能。或者您可以简单地使用limit@start,@end 2)修改您的c查询,并根据ui交互进行分页。