小弟在项目中遇到一个问题,在此求教
在一个分页存储过程中,我用到DataBase.GetParameterValue()来获得记录总数,代码如下: db.AddInParameter(dbCommand, "Table_Name", DbType.AnsiString, pager.TableName);
                db.AddInParameter(dbCommand, "Primary_Key", DbType.AnsiString, pager.PrimaryKey);
                db.AddInParameter(dbCommand, "Show_Fields", DbType.AnsiString, pager.ShowFields);
                db.AddInParameter(dbCommand, "Page_Size", DbType.Int32, pager.PageSize);
                db.AddInParameter(dbCommand, "Page_Index", DbType.Int32, pager.PageIndex);
                db.AddOutParameter(dbCommand, "TotalCount", DbType.Int32, pager.TotalCount);
                db.AddInParameter(dbCommand, "IsReTotalCount", DbType.Int32, 1);
                db.AddInParameter(dbCommand, "Order_Field", DbType.AnsiString, pager.OrderField);
                db.AddInParameter(dbCommand, "OrderType", DbType.Boolean, pager.OrderType);
                db.AddInParameter(dbCommand, "where_Condition", DbType.String, pager.StrWhere);
                using (DataSet ds = db.ExecuteDataSet(dbCommand))
                {
                    if (db.GetParameterValue(dbCommand, "TotalCount") != DBNull.Value && db.GetParameterValue(dbCommand, "TotalCount") != null)
                    {
                        TotalCount = Convert.ToInt32((db.GetParameterValue(dbCommand, "TotalCount")));
                        dt = ds.Tables[0];
                    }
当我第一次传入0的时候可以获得返回总数,但是当我把总数转入存储过程,然后可以获得分页的信息,但是db.GetParameterValue(dbCommand, "TotalCount") == DBNull.Value 是我的参数传错了吗??

解决方案 »

  1.   


    当我获得第2页信息的时候 却是GetParameterValue(dbCommand, "TotalCount") == DBNull.Value  这是为什么
      

  2.   

    你的存储过程 将总数 out
      

  3.   

     @Table_Name varchar(5000), --表名
         @Primary_Key varchar(50), --主键Primary_Key  
     @Show_Fields varchar(1000),        --查找的字段  Show_Fields 
         @Page_Size int = 20, --页大小
         @Page_Index int = 1, --页码       
     @Order_Field varchar(1000),     --排序字段 Order_Field 
         @OrderType bit = 0,                --排序方式 1为 DESC, 0为 ASC 默认值是升序 OrderType 
         @IsReTotalCount int,           -- 返回记录总数, 非 0 值则返回记录总数 
         @where_Condition varchar(1000), --筛选条件,不带where_Condition (不加Where)
     @TotalCount int output
    存储过程中,我已经设置这样参数了
      

  4.   

    db.AddOutParameter(dbCommand, "TotalCount", DbType.Int32, pager.TotalCount);
    我知道了是这句话的问题,我想把output的参数每次传进去,可是没有传近去
    然后我用
    db.SetParameterValue(dbCommand,"TotalCount",100);
    可是传的还是Null
      

  5.   

    db.AddOutParameter(dbCommand, "TotalCount", DbType.Int32, pager.TotalCount); 
    这句是正确的~~
    没有问题啊