首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

100分求分页存储与DATASET相结合的C#源码解决思路

2012-03-06 
100分求分页存储与DATASET相结合的C#源码CREATEPROCEDURELy_GetRecordFromPage@tblNamevarchar(255),--表

100分求分页存储与DATASET相结合的C#源码
CREATE     PROCEDURE     Ly_GetRecordFromPage    
                                          @tblName                                                 varchar(255),                                                                 --             表名        
                                      @RetColumns                                     varchar(1000)     =     '* ',                                     --             需要返回的列,默认为全部                
                                      @Orderfld                                             varchar(255),                                                                 --             排序字段名                
                                      @PageSize                                             int         =         10,                                                                         --             页尺寸                
                                      @PageIndex                                         int         =         1,                                                                             --             页码                
                                      @IsCount                                                 bit         =         0,                                                                             --             返回记录总数,             非             0             值则返回                


                                      @OrderType                             bit     =     0,                                                 --     设置排序类型,     非     0     值则降序    
                                      @strWhere                                             varchar(1000)         =         ' '                                     --             查询条件             (注意:             不要加             where)                
      AS    
                         
      declare             @strSQL                             varchar(1000)                                         --             主语句                
      declare             @strTmp                             varchar(300)                                             --             临时变量                
      declare             @strOrder                     varchar(400)                                             --             排序类型                
                 
      if         @IsCount         !=             0                 --执行总数统计    
         
              begin    
                      if     @strWhere     !=     ' '                
                                      set             @strSQL             =             "select             count(*)             as             Total             from             [ "             +             @tblName             +             "]         where     "     +     @strWhere        


                      else    
                                      set             @strSQL             =             "select             count(*)             as             Total             from             [ "             +             @tblName             +             "] "    
              end    
                 
      else                                                                                 --执行查询操作    
         
      begin    
                                                 
                      if         @OrderType         !=             0                
                                              begin                
                                                                                              set             @strTmp             =             " <(select             min "                
                                                                                              set             @strOrder             =             "             order             by             [ "             +             @Orderfld             + "]             desc "                
                                              end                


                      else                
                                              begin                
                                                                                              set         @strTmp             =             "> (select             max "                
                                                                                              set         @strOrder             =             "             order             by             [ "             +             @Orderfld             + "]             asc "                
                                              end                
                                                 
                      set         @strSQL             =             "select             top             "             +             str(@PageSize)             +             "             "     +     @RetColumns     +     "                 from             [ "                
                                                                      +             @tblName             +             "]             where             [ "             +             @Orderfld             +             "] "             +             @strTmp             +             "([ "                


                                                                      +             @Orderfld             +             "])             from             (select             top             "             +             str((@PageIndex-1)*@PageSize)             +             "             [ "                
                                                                      +             @Orderfld             +             "]             from             [ "             +             @tblName             +             "] "             +             @strOrder             +             ")             as             tblTmp) "                
                                                                      +             @strOrder                
                                                 
                      if         @strWhere         !=             ' '                
                                                                      set             @strSQL             =             "select             top             "             +             str(@PageSize)             +             "             "     +     @RetColumns     +     "             from             [ "                


                                                                                                                      +             @tblName             +             "]             where             [ "             +             @Orderfld             +             "] "             +             @strTmp             +             "([ "                
                                                                                                                      +             @Orderfld             +             "])             from             (select             top             "             +             str((@PageIndex-1)*@PageSize)             +             "             [ "                
                                                                                                                      +             @Orderfld             +             "]             from             [ "             +             @tblName             +             "]             where             ( "             +             @strWhere             +             ")             "                
                                                                                                                      +             @strOrder             +             ")             as             tblTmp)             and             ( "             +             @strWhere             +             ")             "             +             @strOrder                


                                                 
                      if         @PageIndex             =             1                
                                              begin                
                                                                                              set             @strTmp             =             " "                
                                                                                              if             @strWhere             !=             ' '                
                                                                                                                                              set             @strTmp             =             "             where             ( "             +             @strWhere             +             ") "                
                                                                         
                                                                                              set             @strSQL             =             "select             top             "             +             str(@PageSize)             +             "             "     +     @RetColumns     +     "             from             [ "                                                            


                                                                                                                                              +             @tblName             +             "] "             +             @strTmp             +             "             "             +             @strOrder                
                                              end    
  end    
                 
exec         (@strSQL)    
GO    
 
 
以上的存储过程    
剩下的我就不会了    
谁能提供一个比较完整的参考,有首页,上一页,下一页的,跳转的代码的源码,能完整的点的,我在网上搜罗了N久,还是找不到DATASET和存储过程结合的分页例子,自己又不会写,这样那样的分页存储过程多得要命,但是确没有一个实际的结合例子供人参考,有那个好心人帮忙写下,现在急需要啊,    
小弟分不多,不够,可以再砸分,只求能得到一个比较完整的例子    
小弟在此拜谢了!  

100分求分页存储与DATASET相结合的C#源码

[解决办法]
sf~
不会。。。
[解决办法]
存储过程如下:
create PROC GetPageData
(
@PageNumINT,--页号
@PageSizeINT,--每页记录数
@OrderByNVARCHAR(255) = 'flcode ',--排序条件
@WhereNVARCHAR(1024) = '1=1 '--查询条件
)
AS

--按条件拼SQL语句
DECLARE @sql NVARCHAR(2048)
--临时变量,按给定的页号和分页大小,计算出的需查询的总记录条数
DECLARE @Total INT
--表中的记录总数
DECLARE @Count INT

SELECT @Count = COUNT(*) FROM flower

--判断参数 @PageSize, @PageNum是否有效
IF @PageSize <= 0
BEGIN
SET @PageSize = 1
END

IF @PageNum <= 0
BEGIN
SET @PageNum = 1
END

--输入的页号 @PageNum 有可能不在有效范围内。将其设定为有效值
IF @PageNum > (@Count / @PageSize)
BEGIN
SET @PageNum = (@Count / @PageSize)
IF @Count % @PageSize != 0
BEGIN
SET @PageNum = @PageNum + 1
END
END

--计算 @Total
SET @Total = @PageSize * @PageNum
IF @Total > @Count
BEGIN
SET @PageSize = @Count - ((@Count / @PageSize) * @PageSize)
SET @Total = @Count
END
/*
--通过前面的计算, @PageSize 有可能是 0。此时将它改变为1,避免后续计算的错误
IF @PageSize <= 0
BEGIN
SET @PageSize = 1
END
*/
--拼接并执行 SQL 语句
SET @sql = 'SELECT * FROM (SELECT TOP ' + CAST(@PageSize AS VARCHAR(10)) +
' * FROM (SELECT TOP ' +
CAST(@Total AS VARCHAR(10)) +
' * FROM flower WHERE ' + @Where + ' ORDER BY ' + @OrderBy + ' ASC)
AS A WHERE ' + @Where + ' ORDER BY ' + @OrderBy + ' DESC) AS flower ORDER BY ' + @OrderBy
PRINT @sql
EXEC sp_executesql @sql

GO

代码很简单,基本上就是调用些存储过程.
如有不明白的地方,我们再讨论...


希望立刻对你有帮助!
[解决办法]
表名 "flower "查找替换你自己的...
[解决办法]
到51aspx中找现成的
[解决办法]
http://dev.csdn.net/author/shadowsky/ca2029f2560a45779bc45601fa6fbc94.html
[解决办法]
public DataSet GetList(int PageSize, int PageIndex, string strWhere)
{
IDataParameter[] parameters = new IDataParameter[]{
new SqlParameter( "@tblName ", SqlDbType.VarChar, 255),
new SqlParameter( "@fldName ", SqlDbType.VarChar, 255),
new SqlParameter( "@PageSize ", SqlDbType.Int),
new SqlParameter( "@PageIndex ", SqlDbType.Int),
new SqlParameter( "@doCount ", SqlDbType.Bit),
new SqlParameter( "@OrderType ", SqlDbType.Bit),
new SqlParameter( "@strWhere ", SqlDbType.VarChar,1000)
};
parameters[0].Value = "Supplier ";
parameters[1].Value = "SupplierID ";
parameters[2].Value = PageSize;
parameters[3].Value = PageIndex;
parameters[4].Value = 0;
parameters[5].Value = 1;
parameters[6].Value = strWhere;
return DbHelperSQL.RunProcedure( "pagination ", parameters, "dtSupplier ");

}


[解决办法]
http://blog.csdn.net/hertcloud/archive/2006/04/13/661700.aspx

将 返回 由 DataReader 改成DataSet即可
[解决办法]
mark 打字太累了,拿个板凳看看

热点排行