MSSQL根据表名动态分页的存储过程以及C#.net调用使用
2012-11-16 20:15
731 查看
2012-07-06 19:44
MSSQL根据表名进行动态分页的sql存储过程:该存储过程中操作的表需要设置主键,否则分页出错....
--动态按表名分页-- alter proc ShowPageByTable @tableName varchar(40), @pageIndex int=1 , @pageSize int=10, @pageCount int =0 output as begin --声明起始和结束的行号 declare @start int, @end int,@pkey varchar(20) --创建临时表存储传入的主键 create table #temp ( tab_qu varchar(20),owenr varchar(20),tablename varchar(20), cname varchar(20),keys int,pname varchar(20) ) insert #temp exec sp_pkeys @tablename --获取该表主键的的系统存储过程 select @pkey=cname from #temp --设置主键 --设置起始和结束坐标 set @start=(@pageIndex-1 )*@pageSize +1 set @end =@pageIndex * @pageSize --动态执行SQL语句,查询所需数据(如果该查询语句有需要其他约束,则需要传入其他约束条件) exec(' select ROW_NUMBER() over(order by '+@pkey+') as RowID,* into #OrderTemp from ' + @tableName +' select * from #OrderTemp where RowID between ' +@start + ' and '+ @end) --执行一次全表查询,判断分页的总页数 exec('select * into #ss from '+@tableName) set @pageCount= @@ROWCOUNT/@pageSize if(@@ROWCOUNT%@pageSize!=0) set @pageCount=@pageCount+1 end
C#调用代码:
/// <summary> /// 根据表名分页,不获取分页的总页数 /// </summary> /// <param name="tablename">表名</param> /// <param name="pageIndex">页码</param> /// <param name="pageSize">每页显示行数</param> /// <returns>该页的数据集</returns> public static DataSet GetDataByNamePage(string tablename, int pageIndex,int pageSize) { DataSet ds = new DataSet(); using (sqlconn) { int count=0; ds= GetDataByNamePage(tablename, pageIndex, pageSize, out count); } return ds; } /// <summary> /// 根据表名分页,包含输出参数总页数 /// </summary> /// <param name="tablename">表名</param> /// <param name="pageIndex">页码</param> /// <param name="pageSize">每页显示行数</param> /// <param name="pagetCount">输出参数:分页的总页数</param> /// <returns>该页的数据集</returns> public static DataSet GetDataByNamePage(string tablename, int pageIndex, int pageSize,out int pagetCount) { DataSet ds = new DataSet(); using (sqlconn) { sqlconn = new SqlConnection(connstr); sqlconn.Open(); SqlDataAdapter sda = new SqlDataAdapter("ShowPageByTable", sqlconn); sda.SelectCommand.CommandType = CommandType.StoredProcedure; sda.SelectCommand.Parameters.AddWithValue("@tableName", tablename); sda.SelectCommand.Parameters.AddWithValue("@pageIndex", pageIndex); sda.SelectCommand.Parameters.AddWithValue("@pageSize", pageSize); sda.SelectCommand.Parameters.Add("@pageCount", SqlDbType.Int); sda.SelectCommand.Parameters["@pageCount"].Direction = ParameterDirection.Output; if (ds.Tables[tablename] != null) ds.Tables[tablename].Clear(); sda.Fill(ds, tablename); pagetCount = (int)sda.SelectCommand.Parameters["@pageCount"].Value; } return ds; }
相关文章推荐
- 完整的分页存储过程以及c#调用方法
- 通用SQL存储过程分页以及asp.net后台调用
- HOW TO:使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- asp.net 调用 mysql 分页存储过程,repeater使用mysql分页存储过程,mysql 存储过程的注意事项
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 通用SQL存储过程分页以及asp.net后台调用的方法
- Oracle分页存储过程以及C#调用
- C#中使用存储过程,C#分页存储过程
- LPAD在Oracle中和 mssql以及在MySQL中的不同用法 以及调用存储过程方法
- 使用c#调用oracle存储过程获取存储过程参数信息
- mysql的存储过程和触发器的使用 以及php中的调用方法
- 使用系统表根据存储过程名字生成ADO.NET数据库访问代码
- C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度
- EXTASPNET C# ASP.NET sql server 调用存储过程超时,解决方法
- 在ASP.NET(C#)中调用周销售记录存储过程
- c#调用多个可选条件查询的分页存储过程
- C#调用SQL存储过程以及返回值和参数的获取