我正在使用Idatareader接口从sql db读取值。我的存储过程中有一个输出参数返回no。行。
这个输出参数我在sql server中获得了正确的值。但是当我试图在我的代码中读取这个值时,它总是返回2。
在网上搜索后发现This,我实施后仍未改变。
try{
ObjDb.Open();
ObjDb.CreateParameters(6);
ObjDb.AddParameters(0, "@CategoryId", Category);
ObjDb.AddParameters(1, "@StartDate", Date1);
ObjDb.AddParameters(2, "@EndDate", Date2);
ObjDb.AddParameters(3, "@PageIndex", 1);
ObjDb.AddParameters(4, "@PageSize", 4);
ObjDb.AddParameters(5, "@RecordCount", System.Data.ParameterDirection.Output);
IDataReader objReader;
objReader = ObjDb.ExecuteReader(CommandType.StoredProcedure, "usp_filterevnts");
while (objReader.Read())
{
.
.
.
.
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
ObjDb.Close();
int count = Convert.ToInt32(ObjDb.dbParameters[5].Value);
System.Web.HttpContext.Current.Session["Count"] = count;
}
return Objlist;
如果我在Sql management studio中执行存储过程,它会给我正确的输出值@RecordCount 4
Where as in code behind every time it is 2
答案 0 :(得分:0)
如果使用输出参数返回记录计数而使用DataReader
来使用记录,则应首先处理读取器,然后必须将其关闭。之后您可以读取输出参数值。
while (objReader.Read())
{
// ...
}
// close the DataReader.
objReader.Close();
// output parameter is now available
int count = Convert.ToInt32(ObjDb.dbParameters["@RecordCount"].Value);
// close the connection