С этим подключением уже связан открытый DataReader, который необходимо сначала закрыть (но не используется datareader)

Я создал простой класс для использования MySQL следующим образом:

public class DatabaseConnect
{
    public DatabaseConnect()
    {
    }

    public object Query(string s)
    {
        try
        {
        string connectionString = "SERVER=servername;DATABASE=dbname;UID=user;PASSWORD=password;";
        using (MySqlConnection connection = new MySqlConnection(connectionString))
        {
            connection.Open();
            using (MySqlCommand cmd = new MySqlCommand(s, connection))
            {
                return cmd.ExecuteScalar();
            }
        }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace);
            return false;
        }
    }
}

Но иногда, когда я вызываю Query(), он терпит неудачу и выдает ошибку, указанную в заголовке. Я понятия не имею, почему это происходит.


person Ladas125    schedule 02.05.2015    source источник
comment
Я не понимаю, как это произойдет из этого кода, поскольку вы правильно/явно открываете и закрываете/удаляете соединение при каждом вызове. Что может произойти, так это то, что соединение в другом месте возвращается в пул соединений с открытым считывателем. Попробуйте добавить pooling=false в конец строки подключения?   -  person StuartLC    schedule 02.05.2015
comment
Пока похоже, что ошибки чтения данных больше нет. Спасибо!   -  person Ladas125    schedule 02.05.2015
comment
Очевидно, что без пула подключение обходится дороже. Похожая проблема, хотя это более очевидно вызвано возвратом соединения с открытым ридером в пул. Кажется, я не могу найти какой-либо отчет о том, является ли это системной проблемой с пулом соединений в драйвере .Net MySql.   -  person StuartLC    schedule 02.05.2015
comment
Это единственный запрос в приложении?   -  person Caramiriel    schedule 02.05.2015