日期:2014-05-18  浏览次数:20539 次

存储过程返回参数报 "未将对象引用设置到对象的实例"
C# code

public List<LinkModel> GetList(string tblName, string FieldKey, int PageCurrent, int PageSize, string FieldShow, string FieldOrder, string where, out int pageCount)
        {
            List<LinkModel> linkList = new List<LinkModel>();
            SqlDataReader dr = default(SqlDataReader);
            SqlParameter[] parameters = {
                    new SqlParameter("@tbname", SqlDbType.VarChar, 255),
                    new SqlParameter("@FieldKey", SqlDbType.NVarChar,1000),
                    new SqlParameter("@PageCurrent", SqlDbType.Int),
                    new SqlParameter("@PageSize", SqlDbType.Int),
                    new SqlParameter("@FieldShow", SqlDbType.NVarChar,1000),
                    new SqlParameter("@FieldOrder", SqlDbType.NVarChar,1000),
                    new SqlParameter("@Where", SqlDbType.VarChar,1000),
                    new SqlParameter("@RowCount", SqlDbType.Int)
                    };
            parameters[0].Value = tblName;
            parameters[1].Value = FieldKey;
            parameters[2].Value = PageCurrent;
            parameters[3].Value = PageSize;
            parameters[4].Value = FieldShow;
            parameters[5].Value = FieldOrder;
            parameters[6].Value = where;

            parameters[7].Direction = ParameterDirection.Output;
            try
            {
                dr = SqlHelper.ExecuteReader(DbHelperSQL.connectionString, CommandType.StoredProcedure, "sp_PageGetComm_Row", parameters);
                while (dr.Read())
                {
                    linkList.Add(SqlDataReaderTOObject(dr));
                }

                dr.Close();//关闭读取后才能获取返回信息
              [color=#008000]  pageCount = Convert.ToInt32(parameters[7].Value.ToString());[/color]
            }
            finally
            {
                if (dr != null && !dr.IsClosed)
                    dr.Close();
            }
            return linkList;
        }





存储过程都有返回参数 在数据库执行也能得到返回参数 标出来的那个地方报 未将对象引用设置到对象的实例


------解决方案--------------------
连的时候写了打开数据库?

dr.open
------解决方案--------------------
程序错误。木有初始化?
------解决方案--------------------
此錯誤應是沒有給@RowCount賦值,檢測下你的存儲過程
------解决方案--------------------
按照我公司的同样情况,是因为存储过程返回null,而程序没有判断对null值的处理,直接“以为”一定会返回一个数据集,所以报错,你跟踪一下是否有这种情况。