程序尽可能地降低其使用的复杂性,它的优点是使用方便。现在这个程序还有一个缺点,那就是第读取一页的数据,都要打开一次数据库,这个问题是可以解决的,那就是要求在不使用之用执行一个Close,关闭数据库,这是以牺牲程序的安全性为代价的。
各个方面需要权衡利弊。 * 使用说明:
* 首先创建一个MyDataPage类实例mypage,然后设置数据库连接串、查询表、查询列、查询条件、
* 排序条件等。然后执行mypage.DoPaging(),注意检查其返回值,返回真表示分页成功,否则
* 应查看mypage.ErrMessage属性。成功后,就可以使用mypage.GetData(<页编号>)读取数据了.
*
* 示例:
*
* using MyLibrary.DataAccess;
* MyDataPage myPage = new MyDataPage(
* "provider=sqloledb;server=(local);uid=sa;pwd=oohacker;database=Northwind",
* "Product",
* "ProductId,ProductName",
* "SupplierId<>1",
* "SupplierId ASC, ProductId DESC",
* 20);
*
* if (myPage.DoPaging())
* {
* Console.Write("Total Records: {0} Total Pages: {1} ",
* myPage.RecordCount,
* myPage.PageCount);
*
* for (int i=1; i<=myPage.PageCount; ++i)
* {
* Console.Write("Page {0} ", i);
* DataTable table = myPage.GetData(i);
* for (int j=0; j<table.Rows.Count; ++j)
* {
* Console.Write("#{0}:{1} ",
* table.Rows[j]["ProductId"],
* table.Rows[j]["ProductName"]);
* }
* }
* }
* else
* {
* Console.Write("分页失败!原因:{0} ", myPage.ErrMessage);
* }
*
using System;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace MyLibrary.DataAccess
...{
public class MyDataPage
...{
成员变量#region 成员变量
const int defaltPageSize = 10;
private int recordCount;
private int pageCount;
private int pageSize;
private string table;
private string columns;
private string conditions;
private string orders;
private string connectionString;
private string errorMessage;
private bool isDirty;
#endregion
构造函数#region 构造函数
public MyDataPage(string _connectionString, string _table)
...{
Init(_connectionString, _table, "*", "", "", defaltPageSize);
}
public MyDataPage(string _connectionString, string _table, int _pageSize)
...{
Init(_connectionString, _table, "*", "", "", _pageSize);
}
public MyDataPage(string _connectionString, string _table, string _columns, int _pageSize)
...{
Init(_connectionString, _table, _columns, "", "", _pageSize);
}
public MyDataPage(string _connectionString, string _table, string _columns, string _conditions, int _pageSize)
...{
Init(_connectionString, _table, _columns, _conditions, "", _pageSize);
}
public MyDataPage(string _connectionString,
string _table, string _columns, string _conditions, string _orders, int _pageSize)
...{
Init(_connectionString, _table, _columns, _conditions, _orders, _pageSize);
}
private void Init(string _connectionString,
string _table, string _columns, string _coditions, string _orders, int _pageSize)
...{
this.recordCount = -1;
this.pageCount = -1;
this.PageSize = _pageSize;
this.Table = _table;
this.Columns = _columns;
this.Conditions = _coditions;
this.Orders = _orders;
this.connectionString = _connectionString;
this.isDirty = false;
}
#endregion
// 获取和设置页面大小
public int PageSize
...{
set
...{
pageSize = (value >=10 && value <= 1000) ? value : defaltPageSize;
isDirty = true;
}
get
...{
return pageSize;
}
}
// 获取记录数
public int RecordCount
...{
get ...{ return recordCount; }
}
// 获取页面数
public int PageCount
...{
get ...{ return pageCount; }
}
// 获取和设置表名
public string Table
...{
set ...{ this.table = value.Trim(); isDirty = true; }
get ...{ return this.table; }
}
相关专题
- 数据库专栏 (5296篇文章)
- 数据库处理专题 (9002篇文章)
- 城域网专题 (8008篇文章)
- 数据库安全技术专题 (13517篇文章)
- 数据库安装与卸载 (10792篇文章)
- ADO.NET实用技巧 (6546篇文章)
- .NET移动与嵌入式技术 (6072篇文章)
- .NET开发手册 (5756篇文章)
- Linux数据库宝典 (13792篇文章)
- 数据库相关文章 (5296篇文章)
- ASP.NET生成静态页面和分页主要的原理 (50次浏览)
- ASP.NET2.0—— 实现数据访问层 (41次浏览)
- ASP.NET最常见错误提示 (35次浏览)
- .net中gridview疑难解答 (30次浏览)
- SqlHelper类 (26次浏览)
- ASP.NET实现文件的在线压缩和解压缩 (22次浏览)
- Asp.net 2.0 自定义控件开发 (21次浏览)
- ASP.net 做的IP 访问限制 (19次浏览)
- asp.net 中实现窗体两边的浮动条 (19次浏览)
- Castle在“新.NET时代”将何去何从 (18次浏览)



