View Code
///
PageList for DataReader
///
</summary>
///
<param name="connectionString"></param>
///
<param name="sql"></param>
///
<param name="pageSize"></param>
///
<param name="curPage"></param>
///
<param name="pageCount"></param>
///
<param name="count"></param>
///
<param name="cmdParms"></param>
///
<returns></returns>
public
DataTable PageListReader(
string
connectionString,
string
sql,
int
pageSize,
int
curPage,
out
int
pageCount,
out
int
count,
params
DbParameter[] cmdParms) {
int
first
=
0
;
int
last
=
0
;
int
fieldCount
=
0
;
using
(SqlConnection conn
=
new
SqlConnection(connectionString)) { SqlCommand cmd
=
conn.CreateCommand(); PrepareCommand(cmd, conn,
null
, CommandType.Text, sql, cmdParms); SqlDataReader reader
=
cmd.ExecuteReader(CommandBehavior.CloseConnection); DataTable dt
=
new
DataTable(); fieldCount
=
reader.FieldCount;
for
(
int
i
=
0
; i
<
fieldCount; i
++
) { DataColumn col
=
new
DataColumn(); col.ColumnName
=
reader.GetName(i); col.DataType
=
reader.GetFieldType(i); dt.Columns.Add(col); } count
=
0
; first
=
(curPage
-
1
)
*
pageSize
+
1
; last
=
curPage
*
pageSize;
while
(reader.Read()) { count
++
;
if
(count
>=
first
&&
last
>=
count) { DataRow r
=
dt.NewRow();
for
(
int
i
=
0
; i
<
fieldCount; i
++
) { r[i]
=
reader[i]; } dt.Rows.Add(r); } } reader.Close(); pageCount
=
Convert.ToInt32(Math.Ceiling((
double
)count
/
(
double
)pageSize));
return
dt; } }
2
.用ROW_NUMBER()分页
///
<summary>
///
分页获取数据(Sql Server 2005) for ROW_NUMBER()
///
</summary>
///
<param name="connectionString">
数据库链接
</param>
///
<param name="sql">
获取数据集的Sql
</param>
///
<param name="fldSort">
排序字段,可以多个
</param>
///
<param name="pageSize">
每页显示多少条
</param>
///
<param name="curPage">
当前页码
</param>
///
<param name="pageCount">
总页数
</param>
///
<param name="count">
总记录数
</param>
///
<param name="cmdParms">
DbParameter
</param>
///
<returns>
DataTable
</returns>
public
DataTable PageList(
string
connectionString,
string
sql,
string
fldSort,
int
pageSize,
int
curPage,
out
int
pageCount,
out
int
count,
params
DbParameter[] cmdParms) { StringBuilder strSql
=
new
StringBuilder(); strSql.AppendFormat(
@"
SELECT count(0) from {0} as MyTableCount; select * from ( SELECT ROW_NUMBER() OVER(order by {1}) RowNumber,* from {0} mytable ) mytable2 where RowNumber between {2} and {3}
"
, sql, fldSort, Convert.ToString((curPage
-
1
)
*
pageSize
+
1
), Convert.ToString((curPage
*
pageSize))); DataSet ds
=
ExecuteQuery(connectionString, CommandType.Text, strSql.ToString(), cmdParms); count
=
Convert.ToInt32(ds.Tables[
0
].Rows[
0
][
0
]); pageCount
=
Convert.ToInt32(Math.Ceiling((
double
)count
/
(
double
)pageSize));
return
ds.Tables[
1
]; }
转载于:https://www.cnblogs.com/Mr0909/archive/2011/05/12/2044829.html
相关资源:垃圾分类数据集及代码
转载请注明原文地址: https://mac.8miu.com/read-26436.html