日期:2014-05-17  浏览次数:20416 次

asp.net存储过程调用问题
这个是我从网上找的sql2005的数据分页的存储过程
SQL code

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
create PROCEDURE [dataPage]
(
 @TableName varchar(50),            --表名
 @ReFieldsStr varchar(200) = '*',   --字段名(全部字段为*)
 @OrderString varchar(200),         --排序字段(必须!支持多字段不用加order by)
 @WhereString varchar(500) =N'',  --条件语句(不用加where)
 @PageSize int,                     --每页多少条记录
 @PageIndex int = 1 ,               --指定当前为第几页
 @TotalRecord int output            --返回总记录数
)
AS
 
BEGIN    

    --处理开始点和结束点
    Declare @StartRecord int;
    Declare @EndRecord int; 
    Declare @TotalCountSql nvarchar(500); 
    Declare @SqlString nvarchar(2000);    
    set @StartRecord = (@PageIndex-1)*@PageSize + 1
    set @EndRecord = @StartRecord + @PageSize - 1 
    SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName;--总记录数语句
    SET @SqlString = N'(select row_number() over (order by '+ @OrderString +') as rowId,'+@ReFieldsStr+' from '+ @TableName;--查询语句
    --
    IF (@WhereString! = '' or @WhereString!=null)
        BEGIN
            SET @TotalCountSql=@TotalCountSql + '  where '+ @WhereString;
            SET @SqlString =@SqlString+ '  where '+ @WhereString;            
        END
    --第一次执行得到
    --IF(@TotalRecord is null)
    --   BEGIN
           EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回总记录数
    --  END
    ----执行主语句
    set @SqlString ='select * from ' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' +  ltrim(str(@EndRecord));
    Exec(@SqlString)    
END
    



asp.net页面
JScript code

$(function(){
         var p=$("aPage").attr("rel");//a连接页数
    $.ajax({ 
        url:"action/admin.ashx",
        type:"get",
        data:"ac=page&page="+p,
        success:function(str){
            alert(str);//这里将返回字符串并填充到html中div中  //这里先弹出
        }
    });
});


admin.ashx页面
C# code

public HttpContext hc;
if (!string.IsNullOrEmpty(hc.Request.QueryString["ac"]))
{
    string p=hc.Request.QueryString["ac"].ToString();
    public void ccgcPage() 
    {     
       //这里怎么调用存储过程,并根据我传递p的值返回相对的数据???
    }
}




本人对存储过程不是很了解,求代码……,

------解决方案--------------------
仔细看看http://blog.sina.com.cn/s/blog_597d0c380100bwry.html
------解决方案--------------------
去好好看看ado.net吧~~~~
------解决方案--------------------
C# code


        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        public DataSet GetList(int PageSize,int PageIndex,string strWhere)
        {
            SqlParameter[] parameters = {
                    new SqlParameter("@tblName", SqlDbType.VarChar, 255),
                    new SqlParameter("@fldName", SqlDbType.VarChar, 255),
                    new SqlParameter("@PageSize", SqlDbType.Int),
                    new SqlParameter("@PageIndex", SqlDbType.Int),
                    new SqlParameter("@IsReCount", SqlDbType.Bit),
                    new SqlParameter("@OrderType", SqlDbType.Bit),
                    new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
                    };
            parameters[0].Value = "表名";
            parameters[1].Value = "TeamBuyId";//排序字段
            parameters[2].Value = PageSize;
            parameters[3].Value = PageIndex;
            paramet