ADO.Net DataReader错误:已经是Open DataReader

Geo*_*ge2 0 .net c# ado.net sql-server-2008 visual-studio-2008

我正在使用C#+ .Net 3.5 + VSTS 2008 + ADO.Net + SQL Server 2008.我正在我的应用程序中共享一个单独的SQL连接对象(我的下面示例中的TestDBConnection变量).

我遇到的例外情况是,"已经有一个与此命令关联的开放DataReader必须首先关闭.."任何想法有什么问题?

我正在使用的应用程序中的模式都是这样的,即共享单个数据库连接对象TestDBConnection,并使用单个TestDBConnection变量在其上创建命令并执行存储过程.

        using (SqlCommand testCommand = new SqlCommand())
        {
            testCommand.Connection = TestDBConnection;
            testCommand.CommandType = CommandType.StoredProcedure;
            testCommand.CommandText = "prc_AddOrderStatus";
            testCommand.Parameters.Add("@orderID", SqlDbType.NVarChar).Value = orderID;
            testCommand.ExecuteNonQuery();
        }
Run Code Online (Sandbox Code Playgroud)

乔治,提前谢谢

Ric*_*dOD 7

不要共享连接,而是使用连接池.如果您在连接上同时执行两项操作,则可能需要查看MARS.

对于测试,将此添加到您的连接字符串:;MultipleActiveResultSets=True;并查看是否"修复"了错误.很多人认为你应该避免使用MARS,所以这是需要考虑的事情.