DbReader对象没有结果,卡住了
本文关键字:结果 对象 DbReader | 更新日期: 2023-09-27 18:12:34
我对传递多个结果集(从选择查询返回)到我的视图感到困惑。在当前实现中:
- 控制器具有读取对象代理类型列表中所有查询结果的功能。
- 查询返回的结果,即列表在返回语句中传递给View。
问题:
查询是好的,我确认了,但是数据没有进入DbReader。没有错误,程序只是停止,什么都没有返回。在日志中打印的最后一条语句是"in Do-While Read Condition"。我在代码中做错了什么吗?此外,我可以在返回语句中直接传递DbReader对象到我的视图吗?
try
{
logger.AddLog("Connection Set to CreateCommand");
cmd = DBConnection.CreateCommand();
logger.AddLog("Set cmd to Qeueue Stats");
cmd.CommandText = myQuery;
logger.AddLog("DbReader cmd Setting");
DbReader = cmd.ExecuteReader();
var Reader = cmd.ExecuteReader();
// OdbcDat dt = new DataTable();//
// dt = cmd.ExecuteReader();
logger.AddLog("DB Reader Command Complete");
logger.AddLog("DB Reader.Read() Going To Call");
DbReader.Read();
logger.AddLog("DB Reader.Read() Completed Call");
dataComing = true;
logger.AddLog("DrReader is:"+ Reader.FieldCount);
logger.AddLog("Testing Data:" + Reader.GetString(2));
}
catch (Exception e)
{
dataComing = false;
logger.AddLog("ERROR while intiating DB Connection in Show Controller,error is:" + e.ToString());
return View();
}
do
{
//agents is a LIST of Objects type Agent class
logger.AddLog("In Do-While Read Condition");
logger.AddLog("AgentName = " + DbReader["AgentName"].ToString());
agents.Add(new Agent {
name = DbReader["AgentName"].ToString(),
state = DbReader["State"].ToString(),
systemtime = Convert.ToDateTime(DbReader["SystemTime"].ToString()),
statechange = Convert.ToDateTime(DbReader["statechange"].ToString()),
});
} while (DbReader.Read());
return Json(agents, JsonRequestBehavior.AllowGet);
如果使用多个结果集,则需要调用NextResult()
在此链接中查看"使用NextResult检索多个结果集"部分