Как я могу преобразовать DataSet a в DataReader? - PullRequest
5 голосов
/ 20 августа 2010

Как я могу преобразовать DataSet в DataReader?

Ответы [ 6 ]

13 голосов
/ 21 февраля 2013

Вы можете использовать следующий код, чтобы изменить набор данных на DataReader:

DataTableReader rd = ds.Tables[0].CreateDataReader();
4 голосов
/ 20 августа 2010

И DataSet, и DataTable предоставляют метод CreateDataReader, который создает DataTableReader.Проверьте эти ссылки -

http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx

http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx

0 голосов
/ 20 августа 2010

Вы не можете преобразовать DataSet в DbDataReader.

Однако вы можете создать DbDataReader, который будет считывать результаты из DataSet, вызывая метод CreateDataReader для DataSet.

Однако это кажетсякак странная вещь, чтобы хотеть сделать.Вы можете просто перебрать результаты, содержащиеся в DataSet, используя свойство Tables DataSet и свойство Rows DataTable.Использование DbDataReader ограничит вас перенаправлением только доступа к результатам.Единственное преимущество, которое я вижу при использовании DbDataReader, - это если бы у вас был вызов API, чтобы сделать необходимый параметр в качестве параметра.

Если ваш DataSet является результатом команды SELECT из базы данных, вы должнывозможность получить DbDataReader, вызвав DbCommand.ExecuteReader ().Это полностью отключит DataSet и приведет к чему-то более эффективному.

0 голосов
/ 20 августа 2010

Если вы хотите перебрать DataSet, вам не нужен DataReader.DataSet - это отключенный объект в памяти, поэтому итерируйте его, используя for-each:

foreach(var row in ds.Tables["YourTable"])
{
     var value = row.Field<int>("ID"); // etc
}
0 голосов
/ 20 августа 2010

DataSet - это отключенный объект в памяти. DataReader - это подключенный однонаправленный объект.

Так что я думаю, что это невозможно.

Это действительно нужно?

0 голосов
/ 20 августа 2010

DataSet имеет метод с именем CreateDataReader, который создаст DataTableReader, но я не думаю, что вы можете создать DataReader.

DataSet.CreateDataReader

...