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

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

  1. android实现mysql数据库存储_一个简单的Android端对象代理数据库系统的实现(二、执行+存储)...

    这是我之前在武汉大学彭智勇老师那边做过的一个对象代理数据库系统.文中给出了一整个系统的几乎所有代码,经测试可正常运行.文章比较长,超出了知乎的最长文章范围,因此分为两篇文章.这是第二篇. 执行 执行部 ...

  2. java分页sql语句_「sql分页」sql语句 实现分页 - seo实验室

    sql分页 sql语句 实现分页 /* 分页思想:比如你要每页获取10条记录,当你显示第5页的记录时, 也就是选取第40条至50条的记录.首先应该从所有的记录集中选取 50条记录,同时进行倒序,再从中 ...

  3. oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解

    oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...

  4. 【转】在SQL Server中通过SQL语句实现分页查询

    在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...

  5. mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句

    mysql取字段逗号分隔的第一个 cover字段为:(admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B) 取逗号分隔第一个词 ...

  6. c 将mysql表数据打印,c 中数据库数据如何导出至excel表格-用sql语句把一个数据库内的表保存成excel表格??...

    如何用JAVA将数据库中的数据导入到excel表格 1.C语言产生ASCII数据文件,使用空格做作为数据分隔符. 2入Excel,选择数据选项卡 / 获部数据工具组 / 自文本按钮 3.进入数据导入框 ...

  7. Mybatis借助Sql语句进行分页

    实现:通过sql语句实现分页 在FcTagNumberInfoMapper接口中添加sql语句查询的方法 public List<FcTagNumberInfo> selectFcTagN ...

  8. mysql并行回放_技术分享 | 从库 MTS 多线程并行回放(一)

    作者:高鹏(八怪) 本节包含分发调用流程请参考链接: 一.综述 与单 SQL 线程的回放不同,MTS 包含多个工作线程,原有的 SQL 线程蜕变为协调线程.SQL 协调线程同时还承担了检查点的工作.我 ...

  9. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

最新文章

  1. linux 内核 虚拟文件系统VFS 路径查找 path_lookup
  2. webpack vue app.js自动注入页面.为app.js增加随机参数
  3. hdu 2988 Strange fuction【模拟退火】
  4. mysql对结果限制_在查询中限制MySQL结果
  5. 进大学时高考成绩是班里第一,同样也是努力学习,为什么大学时做不到第一了呢?
  6. cwntos使用不了php,centos系统不能使用yum命令怎么解决
  7. 工具 | Procexp工具使用及案例说明
  8. 国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型
  9. python程序设计基础课后答案-python语言程序设计基础(第2版)课后答案嵩天
  10. WPS Word为PDF签名
  11. 八个笑话,八个人生哲理
  12. 人工智能前沿技术应用趋势与发展展望
  13. 移动硬盘、U盘因中断原因变为只读模式解决办法
  14. 谈谈卷积神经网络和循环神经网络
  15. android 新闻功能列表,news: 用Android基本技术实现的新闻App
  16. 3.1 jmeter 响应断言
  17. LPR定价合适,还是固定利率合适,python帮你算一算
  18. python熊猫弹幕_GitHub - woaishui/danmu: Python 弹幕包 A live danmu package for python
  19. sql中以sa命名的用户名无法使用,错误码1845
  20. dft对称性 matlab实验,数字信号处理实验 matlab版 离散傅里叶变换的性质

热门文章

  1. 【BZOJ-3730】震波 动态点分治 + 树状数组
  2. Oracle数据库只读事务和无事务的区别
  3. 252.Meeting Rooms
  4. (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
  5. VS2010/MFC编程入门之四十四:定时器Timer
  6. 在codeigniter中使用Cache_Lite来缓存
  7. SQL 学习笔记一 入门
  8. 构建高性能ASP.NET站点 开篇
  9. ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
  10. java oop入门_Java OOP入门起源