DataAccess层就行,下面的代码应该能给你点提示:public DataSetVendor GetVendorByQuery(string query,int start,int pageSize)
{
DataSetVendor dsVendor = new DataSetVendor();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = this.sqlConnection.CreateCommand();
if(query == "")
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor" );
da.Fill(dsVendor,start,pageSize,"Vendor");
}
else
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor WHERE {0}",query);
da.Fill(dsVendor,start,pageSize,"Vendor");
// da.SelectCommand.Connection = this.sqlConnection;
}
return dsVendor;
{
DataSetVendor dsVendor = new DataSetVendor();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = this.sqlConnection.CreateCommand();
if(query == "")
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor" );
da.Fill(dsVendor,start,pageSize,"Vendor");
}
else
{
da.SelectCommand.CommandText = String.Format("SELECT * FROM Vendor WHERE {0}",query);
da.Fill(dsVendor,start,pageSize,"Vendor");
// da.SelectCommand.Connection = this.sqlConnection;
}
return dsVendor;
解决方案 »
- **急!图片以二进制流存入数据库问题,image类型如何存入图片?
- 关于picture box 的使用问题求解
- [求助]OWC10画统计图!!!
- 水晶报表导出PDF错误!!!求助!!
- .NET 如何统计在线的用户数量啊
- 从一个类中向另外的一个FORM中的listview添加item
- 【求助】关于项目安全和保密的方案求助
- C# 导入Excel数据到Access数据库问题
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许
- 游戏开发,随意说,来者有分
- 如何在datagrid中实现主表与子表的效果
- 对象池问题:如何处理服务停止?
用adapter这样fill一定的pageSize到DataSet,对于SqlServer来说,是先做了全查询再装入结果集中的指定部分,还是真的只输出了那一部分的查询结果啊?如果试“全查询输出”在表记录很多的情况下sql server会很慢。所以我想找个好办法出来。
方法一性能太差,不可取。
方法二关键是做出来的逻辑分层不清晰。
我的问题就是“怎样保证性能又能分层清晰”,不是“怎么做分页”。
做分页的方式有很多,viewState和view也是一种办法。我比较想能听听大家有没有更好的办法。保证逻辑分层清晰,同时保证性能没有太大损失。
有请各位大侠,集思广益。
ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkwalkthroughdisplayingdatainlistboxesonwebformspage.htm
上面是针对web的分页机制。但是思路确实很不错的。效率也没有话说。http://blog.csdn.net/bineon/articles/38701.aspx
实现千万级数据的分页显示!
看看。
或者
放在数据库层,用存储过程实现比放在ui层好
另外性能方面建议使用DataReader,速度上会快很多(大数据的时候),读的时候在里面加一个记数器,把将要显示的数据存在一个DataTable中进行绑定! 如: CurrentPageIndex*(每页行数) = 30
则,当记数器读到31的时候开始取数据,并存在DataTable中,直到取完一页的数据;
不知道你明白没?
|
|(向下传递Sql语句)
--------------------
|
分页控件
|
-------------------
|(向上传递要显示的页码)
UI