У меня утечка памяти из-за неправильного закрытия соединения. Это связано с использованием глобальной функции для доступа к базе данных (с разными строками SQL), но я возвращаю sqldatareader. Я не могу закрыть это ни в методе, ни в соединении с БД, поскольку он закрывает доступ к данным! И он не закрывается должным образом извне этого метода. (
В любом случае есть ли способ взять нужную таблицу, к которой sqldatareader предоставляет доступ в автономном режиме. Чтобы я мог закрыть все соединения, но при этом получить доступ к таблице.
Примечание: разные таблицы возвращаются, поэтому существуют разные поля. Я не хочу дублировать код каждый раз, когда пытаюсь подключиться.
private SqlDataReader OpenDataStream(String sql)
{
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = new SqlConnection();
sqlComm.Connection.ConnectionString = @"Myconnectionstring";
sqlComm.CommandText = sql;
sqlComm.Connection.Open();
SqlDataReader data = null;
data = sqlComm.ExecuteReader();
return data;
// Closing data here, or connection, results in returned object inaccessable.
}
или, может быть, действительный способ закрытия всего этого вне метода (после того, как я получу доступ к тому, что мне нужно)?