Закройте или отпустите мой DataReader или SqlConnection - PullRequest
0 голосов
/ 07 мая 2018

У меня есть следующий код для извлечения имен столбцов из таблицы

conn.Open()
using(SqlCommand cmd = new SqlCommand(colQuery, conn))
    {
        try
        {
            using(SqlDataReader dr = cmd.ExecuteReader())
            {
                dr.Read();

                    var columns = new List<string>();

                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        string colName = dr.GetName(i);
                        columns.Add(dr.GetName(i));
                        repColsString += colName;
                    }                   
                }
                break;
            }
            catch (Exception ex)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(ex.Message);
            }

Я пытался использовать conn.Close (), чтобы закрыть соединение, но 'Недопустимая попытка вызвать Read, когда читатель закрыт.' возвращается

Или тайм-аут соединения с 'Фатальная ошибка внутреннего соединения. Состояние ошибки: 15, токен: 0 '00: 00: 31.1460115

Как правильно закрыть это соединение и выйти из блока использования?

1 Ответ

0 голосов
/ 07 мая 2018

Общая структура:

using conn = new SqlConnection(...) {
    conn.Open();
    using cmd = new SqlCommand(conn) {
        dr = cmd.ExecuteReader();
        while (dr.read) {
            // do stuff
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...