Хранить SqlDataReader-объект в C # / ASP.NET? - PullRequest
0 голосов
/ 13 января 2009

В настоящее время я пишу C # -класс в своем приложении ASP.NET (3.5) для обработки всех запросов к базе данных. Некоторые из методов существуют, чтобы сделать запрос на выборку к базе данных. Внутри метода у меня просто есть SqlDataReader r = command.ExecuteReader(); для извлечения данных.

Теперь я хочу, чтобы метод вернул r, но когда я закрываю соединение с базой данных, устройство чтения данных закрывается, и объект больше не содержит ничего. Мысль о том, чтобы поместить все в массив строк, но это непрактично, если я смешал целочисленные и текстовые поля в моей базе данных. Есть ли простой («готовый») способ хранения данных в каком-либо объекте для возврата?

Ответы [ 4 ]

3 голосов
/ 13 января 2009

Вы можете использовать datatable и SqlDataAdapter:

using(SqlDataAdapter adap = new SqlDataAdapter(cmd))
{
  adap.fill(myDataTable);
}

return myDataTable;
2 голосов
/ 13 января 2009

Как правило, результаты помещаются в коллекцию или в таблицу данных. Datatables немного проще с точки зрения того, что не нужно создавать экземпляры объектов и хранить их.

1 голос
/ 13 января 2009

Вы думали об использовании Linq или ORM, как subsonic для этого

0 голосов
/ 13 января 2009

Вы можете просто установить командное поведение на близкое соединение а потом, когда вы звоните базовое соединение закроется.

...