c# - leer - ¿Cómo puedo convertir DataSet a a DataReader?
getstring c# sqldatareader (6)
DataSet es un objeto en memoria desconectado. DataReader es un objeto unidireccional conectado.
Así que supongo que no es posible.
¿Es realmente necesario?
¿Cómo puedo convertir un DataSet a un DataReader?
No puede convertir un DataSet a un DbDataReader.
Sin embargo, puede crear un DbDataReader que leerá los resultados del DataSet llamando al método CreateDataReader en el DataSet.
Sin embargo, esto parece una cosa extraña de querer hacer. Simplemente puede iterar a través de los resultados contenidos en el DataSet usando la propiedad Tables de DataSet y la propiedad The Rows de DataTable. El uso de un DbDataReader le restringiría a reenviar solo el acceso a los resultados. El único beneficio que puedo ver al usar un DbDataReader sería si tuviera una llamada API para hacer una requerida como parámetro.
Si su DataSet es el resultado de un comando SELECT de una base de datos, debería poder obtener un DbDataReader llamando a DbCommand.ExecuteReader (). Esto cortará por completo el conjunto de datos y dará como resultado algo que es más eficiente.
Si desea iterar a través de DataSet, no necesita un DataReader. DataSet es un objeto en memoria desconectado, itere a través de él utilizando for-each:
foreach(var row in ds.Tables["YourTable"])
{
var value = row.Field<int>("ID"); // etc
}
Tanto DataSet como DataTable exponen un método CreateDataReader que crea un DataTableReader. Verifique estos enlaces -
http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx
http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx
DataSet
tiene un método llamado CreateDataReader
que creará un DataTableReader
, pero no creo que pueda crear un DataReader
.
Puede usar el siguiente código para cambiar el conjunto de datos a DataReader
:
DataTableReader rd = ds.Tables[0].CreateDataReader();