C# 获取与此命令关联的已打开DataReader中的错误,必须先关闭该命令

C# 获取与此命令关联的已打开DataReader中的错误,必须先关闭该命令,c#,asp.net,.net,sql-server,C#,Asp.net,.net,Sql Server,我知道这是一个重复的问题,但我尝试添加MARSMultipleActiveResultSets=True在我的连接字符串中,它不起作用,但仍然遇到相同的问题。我正在使用SQLServerManagementStudio v17.5 这是我的连接字符串 <connectionStrings> <add name="DefaultConnection" connectionString="Server=myserver;Database=mydb;Use

我知道这是一个重复的问题,但我尝试添加MARS
MultipleActiveResultSets=True在我的连接字符串中,它不起作用,但仍然遇到相同的问题。我正在使用SQLServerManagementStudio v17.5

这是我的连接字符串

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Server=myserver;Database=mydb;User ID=myuser;Password=mypassword;MultipleActiveResultSets=True;"  
         providerName="System.Data.SqlClient" />
</connectionStrings>
然后是另一个带有多个数据读取器的交换机

switch (queryType)
{
    case "SelectAHTQ":
                sqlCmd.CommandType = CommandType.StoredProcedure;
                sqlCmd.CommandText = "SP_1";

                // fails here--> SqlDataReader AHTReader = sqlCmd.ExecuteReader();
                while (AHTReader.Read())
                {
                    LiveAHTDetails details = new LiveAHTDetails();
                    details.AHT = AHTReader.GetDouble(0);
                    details.ccName = AHTReader.GetString(1);
                    details.connectionID = connectionId;
                    this.liveStatus.liveDetails.Add(details);
                }
                break;
      .....

谢谢

在执行另一条SQL语句之前,您必须关闭DataReader对象。

您还需要共享导致此错误的代码。您能告诉我们您遇到此错误的代码吗?(顺便说一句,17.5将是您正在使用的Sql Server Management Studio的版本,而不是您正在连接的Sql Server数据库,可以通过运行
SELECT@@version
)找到该数据库Sql Server的版本是2012@Diado。我读了5遍标题,仍然不明白。您能说得更清楚一点吗?“已经有一个与此命令关联的打开的DataReader,必须先关闭它”是当我尝试使用多个DataReader时遇到的一个错误。我希望避免多次打开和关闭连接,尤其是在我使用高服务器需求查询时。连接池将不再是一个问题。只需关闭数据阅读器。
switch (queryType)
{
    case "SelectAHTQ":
                sqlCmd.CommandType = CommandType.StoredProcedure;
                sqlCmd.CommandText = "SP_1";

                // fails here--> SqlDataReader AHTReader = sqlCmd.ExecuteReader();
                while (AHTReader.Read())
                {
                    LiveAHTDetails details = new LiveAHTDetails();
                    details.AHT = AHTReader.GetDouble(0);
                    details.ccName = AHTReader.GetString(1);
                    details.connectionID = connectionId;
                    this.liveStatus.liveDetails.Add(details);
                }
                break;
      .....