DbReader对象没有结果,卡住了

本文关键字:结果 对象 DbReader | 更新日期: 2023-09-27 18:12:34

我对传递多个结果集(从选择查询返回)到我的视图感到困惑。在当前实现中:

  1. 控制器具有读取对象代理类型列表中所有查询结果的功能。
  2. 查询返回的结果,即列表在返回语句中传递给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);

DbReader对象没有结果,卡住了

如果使用多个结果集,则需要调用NextResult()

在此链接中查看"使用NextResult检索多个结果集"部分