微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法

最近使用微软企业库,在做分页绑定的时候发现好象还没有多少通用的方法.为了灵活和换数据库,我不能使用存储过程.为了开发速度最快.我就是用datagrid绑定了.

以前长用的 DataAdapter.Fill(ds, StartRecordNo, PageSize, TableName); 这样获取某一页的数据.但是用微软企业库总么获得这样的数据按 .网上介绍 Database 类的  GetDataAdapter() 函数的文章太少了. 不过最终做成通用分页函数了.

用一条sql语句 select * from AAA 这样的语句,不是分页sql语句.得到总数目,总页数

现在定义的数据访问接口

public   interface  ISysMangerProvider

{

// 执行sql语句获得DataSet数据

DataSet GetDataSetBySqlcomm( string  Sqlcomm);

// 执行sql语句获得DataSet数据 ,提供分页

DataSet GetDataSetBySqlcomm( int  StartRecordNo,  int  PageSize,  string  Sqlcomm, string  TableName);

// 执行sql语句返回影响的行数目

int  ExecSqlcomm( string  Sqlcomm);

}

我门在微软企业库外面在包一层,放一些可以通用的函数 ,也可以简化数据提供者类的构造,和减少代码膨胀

#region  数据提供者,通用基础类

///  

///  数据提供者,通用基础类

///  

public   abstract   class  DataProviderBaseClass

{

#region  定义变量

protected  Database db;

// protected object ReturnObjectValue;

#endregion

#region  构造函数

protected  DataProviderBaseClass()

{

}

protected  DataProviderBaseClass( int  i):  this ()

{

db  =  DatabaseFactory.CreateDatabase();

}

protected  DataProviderBaseClass( string  connectionName):  this ()

{

db  =  DatabaseFactory.CreateDatabase(connectionName);

}

protected  DataProviderBaseClass(SelectDataBae SDB): this ()

{

db  =  DatabaseFactory.CreateDatabase(PublicNews.ChangeDataBase(SDB));

}

#endregion

#region  执行sql语句得到DataSet类型数据

///  

///  执行sql语句得到DataSet类型数据

///  

///  

///  

protected  DataSet ExecuteDataSetBySqlcomm( string  Sqlcomm)

{

DataSet ds;

using  (DbConnection dbConnection  =   this .db.CreateConnection())

{

ds  =   this .db.ExecuteDataSet(CommandType.Text, Sqlcomm);

dbConnection.Close();

}

return  ds;

}

#endregion

#region  执行sql语句获得DataSet数据 ,提供分页

///  

///  执行sql语句获得DataSet数据 ,提供分页

///  

///   当前行数

///   一页分页数量

///   sql语句

///   DataSet对象

protected  DataSet ExecuteDataSetBySqlcomm( int  StartRecordNo,  int  PageSize,  string  Sqlcomm,  string  TableName)

{

DataSet ds  =   new  DataSet();

using  (DbConnection dbConnection  =   this .db.CreateConnection())

{

DbCommand dbCommand  =   this .db.GetSqlStringCommand(Sqlcomm  +   "  ;  select @@Rowcount ;  " );

DbDataAdapter dbDataAdapter  =   this .db.GetDataAdapter();

dbCommand.Connection  =  dbConnection;

dbDataAdapter.SelectCommand  =  dbCommand;

dbConnection.Open();

dbDataAdapter.Fill(ds, StartRecordNo, PageSize, TableName);

dbConnection.Close();

}

return  ds;

}

#endregion

#region  执行sql语句返回影响的行数目

///  

///  执行sql语句返回影响的行数目

///  

///  

///  

protected   int  ExecIntBySqlcomm( string  Sqlcomm)

{

using  (DbConnection dbConnection  =   this .db.CreateConnection())

{

dbConnection.Open();

int  i  =   this .db.ExecuteNonQuery(CommandType.Text, Sqlcomm);

dbConnection.Close();

return  i;

}

}

#endregion

#region  检测DataSet对象是否有数据

///  

///  检测DataSet对象是否有数据

///  

///   要检测的对象

///   返回结果

public   static   bool  CheckDataSet(DataSet Ds)

{

try

{

if  (Ds  !=   null   &&  Ds.Tables.Count  >   0   &&  Ds.Tables[ 0 ].Rows.Count  >   0 )

{

return   true ;

}

else

{

return   false ;

}

}

catch

{

throw ;

}

}

#endregion

#region  检测DataSet对象是否有数据,分页支持

///  

///  检测DataSet对象是否有数据,分页支持

///  

///   要检测的对象

///   返回结果

public   static   bool  CheckDataSetForPage(DataSet Ds,  ref   int  ResultCount)

{

try

{

if  (Ds  !=   null   &&  Ds.Tables.Count  >   0   &&  Ds.Tables.Count  ==   2   &&  Ds.Tables[ 0 ].Rows.Count  >   0 )

{

ResultCount  =  Convert.ToInt32(Ds.Tables[ 1 ].Rows[ 0 ][ 0 ]);

if  (ResultCount  ==   0 )

{

return   false ;

}

else

{

return   true ;

}

}

else

{

return   false ;

}

}

catch

{

throw ;

}

}

#endregion

}

#endregion

好了 最后数据提供者类就很简单了.

public   class  SysMangerProvider : DataProviderBaseClass ,ISysMangerProvider

{

#region  构造函数

public  SysMangerProvider(): base ( 1 )

{

}

public  SysMangerProvider( string  connectionName): base (connectionName)

{

}

public  SysMangerProvider(SelectDataBae SDB):  base (SDB)

{

}

#endregion

#region  执行sql语句得到DataSet类型数据

///  

///  执行sql语句得到DataSet类型数据

///  

///  

///  

public  DataSet GetDataSetBySqlcomm( string  Sqlcomm)

{

return   base .ExecuteDataSetBySqlcomm(Sqlcomm);

}

#endregion

#region  执行sql语句获得DataSet数据 ,提供分页

///  

///  执行sql语句获得DataSet数据 ,提供分页

///  

///   当前行数

///   一页分页数量

///   sql语句

///   DataSet对象

public  DataSet GetDataSetBySqlcomm( int  StartRecordNo,  int  PageSize,  string  Sqlcomm, string  TableName)

{

return   base .ExecuteDataSetBySqlcomm(StartRecordNo, PageSize, Sqlcomm, TableName);

}

#endregion

#region  执行sql语句返回影响的行数目

///  

///  执行sql语句返回影响的行数目

///  

///  

///  

public   int  ExecSqlcomm( string  Sqlcomm)

{

return   base .ExecIntBySqlcomm(Sqlcomm);

}

#endregion

}

在前台绑定的时候就非常简单了

int  ResultCount  =   0 ;

this .ds  =   this .SM.GetDataSetBySqlcomm(startIndex,  this .DataGrid1.PageSize,  "  select * from  PageInfo   "  , " ShowList "  );

if  (DataProviderBaseClass.CheckDataSetForPage( this .ds,  ref  ResultCount))

{

this .DataGrid1.VirtualItemCount  =  ResultCount;

this .DataGrid1.DataSource  =   this .ds.Tables[ 0 ];

this .DataGrid1.DataBind();

}

else

{

this .Response.Write( " 对不起,没有获取到数据。 " );

}

好了 解决用微软企业库的sql语句分页问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值