当前位置:编程学习 > C#/ASP.NET >>

求教:此 SqlParameterCollection 中未包含带有 ParameterName“@rowcount”的 SqlParameter。

此 SqlParameterCollection 中未包含带有 ParameterName“@rowcount”的 SqlParameter。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“@rowcount”的 SqlParameter。

源错误: 


行 99:                 SqlCommand cmd = new SqlCommand(sql, con);
行 100:
行 101:                RowCount = (int)cmd.Parameters["@rowcount"].Value;
行 102:                PageCount = (int)cmd.Parameters["@pagecount"].Value;
行 103:
 


c#

            SqlParameter[] Parameters ={
                               new SqlParameter("@tablename",SqlDbType.NVarChar,50),
                               new SqlParameter("@fieldname",SqlDbType.NVarChar,50),
                               new SqlParameter("@pagesize",SqlDbType.Int),
                               new SqlParameter("@currentpage",SqlDbType.Int),
                               new SqlParameter("@orderid",SqlDbType.NVarChar,50),
                               new SqlParameter("@sort",SqlDbType.Int),
                               new SqlParameter("@rowcount",SqlDbType.Int),
                               new SqlParameter("@pagecount",SqlDbType.Int)};
            
            Parameters[0].Value = q.Table;//表名
            Parameters[1].Value = "*";//字段名
            Parameters[2].Value = q.PageSize;//每页显示条数
            Parameters[3].Value = q.CurrentPage;//当前页数
            Parameters[4].Value = "BuildErrorID";//主键
            Parameters[5].Value = 1;//排序方式,0表示降序,1表示升序
            Parameters[6].Direction = ParameterDirection.Output;//总记录数
            Parameters[7].Direction = ParameterDirection.Output;//总页数

存储过程:
ALTER PROCEDURE [dbo].[PageList] 
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int,--每页显示记录条数
@currentpage int,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
@rowcount int output,--总记录数,共有几条信息
@pagecount int output--总页数,共有多少页
AS
declare @countsql nvarchar(50)
declare @sql nvarchar(200)
declare @subsql nvarchar(100)--not in子sql语句
declare @tmpOrderid nvarchar(50) 
--返回总记录数,并赋值给输出参数@rowcount
set @countsql='select @totalcount=count(*) from '+@tablename
exec sp_executesql @countsql,N'@totalcount int out',@rowcount output

--------------------编程问答-------------------- debug看下,是不是就缺output的
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,