存储过程回来参数报 "未将对象引用设置到对象的实例"
存储过程返回参数报 "未将对象引用设置到对象的实例"
存储过程都有返回参数 在数据库执行也能得到返回参数 标出来的那个地方报 未将对象引用设置到对象的实例
------解决方案--------------------
连的时候写了打开数据库?
dr.open
------解决方案--------------------
程序错误。木有初始化?
------解决方案--------------------
此錯誤應是沒有給@RowCount賦值,檢測下你的存儲過程
------解决方案--------------------
按照我公司的同样情况,是因为存储过程返回null,而程序没有判断对null值的处理,直接“以为”一定会返回一个数据集,所以报错,你跟踪一下是否有这种情况。
- 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值的处理,直接“以为”一定会返回一个数据集,所以报错,你跟踪一下是否有这种情况。