微软企业库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语句分页问题.
微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法相关推荐
- android实现mysql数据库存储_一个简单的Android端对象代理数据库系统的实现(二、执行+存储)...
这是我之前在武汉大学彭智勇老师那边做过的一个对象代理数据库系统.文中给出了一整个系统的几乎所有代码,经测试可正常运行.文章比较长,超出了知乎的最长文章范围,因此分为两篇文章.这是第二篇. 执行 执行部 ...
- java分页sql语句_「sql分页」sql语句 实现分页 - seo实验室
sql分页 sql语句 实现分页 /* 分页思想:比如你要每页获取10条记录,当你显示第5页的记录时, 也就是选取第40条至50条的记录.首先应该从所有的记录集中选取 50条记录,同时进行倒序,再从中 ...
- oracle分页查询sql语句通用,oracle分页查询sql语句,oracle分页查询sql语句详解
oracle分页查询sql语句,oracle分页查询sql语句详解,Oracle分页查询sql语句 Oracle中分页和MySql中的分页不同,MySql中的分页使用关键字limit即可,相对简单一点 ...
- 【转】在SQL Server中通过SQL语句实现分页查询
在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...
- mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句
mysql取字段逗号分隔的第一个 cover字段为:(admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B) 取逗号分隔第一个词 ...
- c 将mysql表数据打印,c 中数据库数据如何导出至excel表格-用sql语句把一个数据库内的表保存成excel表格??...
如何用JAVA将数据库中的数据导入到excel表格 1.C语言产生ASCII数据文件,使用空格做作为数据分隔符. 2入Excel,选择数据选项卡 / 获部数据工具组 / 自文本按钮 3.进入数据导入框 ...
- Mybatis借助Sql语句进行分页
实现:通过sql语句实现分页 在FcTagNumberInfoMapper接口中添加sql语句查询的方法 public List<FcTagNumberInfo> selectFcTagN ...
- mysql并行回放_技术分享 | 从库 MTS 多线程并行回放(一)
作者:高鹏(八怪) 本节包含分发调用流程请参考链接: 一.综述 与单 SQL 线程的回放不同,MTS 包含多个工作线程,原有的 SQL 线程蜕变为协调线程.SQL 协调线程同时还承担了检查点的工作.我 ...
- java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
最新文章
- linux 内核 虚拟文件系统VFS 路径查找 path_lookup
- webpack vue app.js自动注入页面.为app.js增加随机参数
- hdu 2988 Strange fuction【模拟退火】
- mysql对结果限制_在查询中限制MySQL结果
- 进大学时高考成绩是班里第一,同样也是努力学习,为什么大学时做不到第一了呢?
- cwntos使用不了php,centos系统不能使用yum命令怎么解决
- 工具 | Procexp工具使用及案例说明
- 国密SM2算法的只求理解不求甚解 (3/5)SM2算法数学模型
- python程序设计基础课后答案-python语言程序设计基础(第2版)课后答案嵩天
- WPS Word为PDF签名
- 八个笑话,八个人生哲理
- 人工智能前沿技术应用趋势与发展展望
- 移动硬盘、U盘因中断原因变为只读模式解决办法
- 谈谈卷积神经网络和循环神经网络
- android 新闻功能列表,news: 用Android基本技术实现的新闻App
- 3.1 jmeter 响应断言
- LPR定价合适,还是固定利率合适,python帮你算一算
- python熊猫弹幕_GitHub - woaishui/danmu: Python 弹幕包 A live danmu package for python
- sql中以sa命名的用户名无法使用,错误码1845
- dft对称性 matlab实验,数字信号处理实验 matlab版 离散傅里叶变换的性质
热门文章
- 【BZOJ-3730】震波 动态点分治 + 树状数组
- Oracle数据库只读事务和无事务的区别
- 252.Meeting Rooms
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
- VS2010/MFC编程入门之四十四:定时器Timer
- 在codeigniter中使用Cache_Lite来缓存
- SQL 学习笔记一 入门
- 构建高性能ASP.NET站点 开篇
- ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补
- java oop入门_Java OOP入门起源