【发布时间】:2011-03-11 18:27:03
【问题描述】:
我有问题。我为两个函数的统计分析设置了一个循环。第一次通过循环,这两个函数都很好。第二次通过循环第二个函数不返回任何结果。
我不明白为什么第一次通过循环我从 dataReader 获得结果,而随后的每一次我都一无所获 (datareader.hasRows == false)
任何帮助都会很棒。提前谢谢你。
下面是循环结构和第二个函数(失败)的代码概要
startDate = new DateTime(2010, 1, 1);
for(int i = 0; i < 20; i++)
{
for(int j = 1; j <= 12; j++)
{
endDate = new DateTime(2010, j, 1);
schedule = new Schedule();
scheduleXml = string.Empty;
ISession newSession = session.SessionFactory.OpenSession();
scheduleXml = GetScheduleXml(startDate, endDate, locationIds, newSession);
schedule = GetSchedule(schedule, startDate, endDate, locationIds, newSession);
newSession.Close();
}
}
public static Schedule GetSchedule(Schedule schedule, DateTime startDate, DateTime endDate, int locationIds, ISession session)
{
string sqlGetActivitiesTreatmentsRegimens = // Custom SQL Select Statement (I have verified it returns results)
using (OracleCommand comm = new OracleCommand(sqlGetActivitiesTreatmentsRegimens, (OracleConnection)session.Connection))
{
try
{
OracleParameter plantIdParam = comm.CreateParameter();
plantIdParam.DbType = DbType.Int32;
plantIdParam.Value = plantId;
comm.Parameters.Add(plantIdParam);
OracleParameter startDateParam = comm.CreateParameter();
startDateParam.DbType = DbType.DateTime;
startDateParam.Value = startDate;
comm.Parameters.Add(startDateParam);
OracleParameter endDateParam = comm.CreateParameter();
endDateParam.DbType = DbType.DateTime;
endDateParam.Value = endDate;
comm.Parameters.Add(endDateParam);
using(OracleDataReader dr = comm.ExecuteReader())
{
while(dr.Read())
{
// does stuff here
}
}
}
catch (Exception ex)
{
throw new Exception("Source:GetRegimensEx:" + ex.Message, ex.InnerException);
}
}
return new Schedule();
}
【问题讨论】:
标签: c# oracle datareader