Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 已打开与此连接关联的DataReader_C#_Mysql - Fatal编程技术网

C# 已打开与此连接关联的DataReader

C# 已打开与此连接关联的DataReader,c#,mysql,C#,Mysql,我使用下面的代码从C中的mySql获取数据。当我这样做时,我会得到下面提到的错误代码。我发现了一些关于这个主题的问题,但他们使用了DataReader,而我不是 MySqlConnection sq = new MySqlConnection("..."); sq.Open(); MySqlCommand sc = new MySqlCommand("select * from users", sq); DataSet ds = new DataSet(); MySqlDataAdapter d

我使用下面的代码从C中的mySql获取数据。当我这样做时,我会得到下面提到的错误代码。我发现了一些关于这个主题的问题,但他们使用了DataReader,而我不是

MySqlConnection sq = new MySqlConnection("...");
sq.Open();
MySqlCommand sc = new MySqlCommand("select * from users", sq);
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(sc);
da.Fill(ds);
sq.Close();
我的错误:

已存在与此连接关联的打开的DataReader 必须先关闭它


在连接字符串中,只需添加MultipleActiveResultSets=True

我不知道这是否解决了您的问题,但是

将using statant用于连接、命令和数据适配器。这将处理实现IDisposable的所有对象,并关闭连接:

using(var sq = new MySqlConnection("..."))
using(var sc = new MySqlCommand("select * from users", sq))
using(var da = new MySqlDataAdapter(sc))
{
    DataSet ds = new DataSet();
    da.Fill(ds); 
    // you don't need to open/close the connection with a datadapter
} // but even without a dataadapter the using would have been closed the connection here

正如错误所说,您没有关闭打开的每个连接

可能是因为你得到了一个例外。您可以使用Tim的建议:

using(var sq = new MySqlConnection("..."))
using(var sc = new MySqlCommand("select * from users", sq))
using(var da = new MySqlDataAdapter(sc))
也可以使用try-catch语句:

try
{
// Your code here
}
catch
{
    // Whatever code you want here
}
finally
{
    da.Close();
    sc.Close();
    sq.Close();
}
新的MySqlCommandselect*来自用户,sq

MySqlDataAdapter的此实现打开和关闭 MySqlConnection(如果尚未打开)。这在特定的情况下非常有用 必须调用DbDataAdapter.Fill方法两个或多个 更多MySqlDataAdapter对象。如果MySqlConnection已经打开, 必须显式调用MySqlConnection.Close或 MySqlConnection.Dispose关闭它

因此,无需打开连接,MySqlDataAdapter将在需要时打开它


最好使用陈述作为其他答案

我想mysql不支持这个哦!!我没有注意到这一点,我认为您应该尝试使用关键字,它将在use1+用于USING语句之后处理连接