Come posso convertire un DataSet in un DataReader?Come posso convertire DataSet a su DataReader?
risposta
È possibile utilizzare il seguente codice per modificare set di dati a DataReader
:
DataTableReader rd = ds.Tables[0].CreateDataReader();
DataSet
ha un metodo chiamato CreateDataReader
che creerà un DataTableReader
, ma non credo che si può creare un DataReader
.
DataSet è un oggetto disconnesso in memoria. DataReader è un oggetto unidirezionale connesso.
Quindi immagino che non sia possibile.
È davvero necessario?
https://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader(v=vs.110).aspx - Legge un flusso forward-only di righe da un'origine dati. Non dice nulla sull'essere 'Connesso' ad un database. – JJS
Se si desidera eseguire un'iterazione tramite DataSet, non è necessario un DataReader. DataSet è un oggetto in memoria scollegato quindi iterare attraverso utilizzando for-each:
foreach(var row in ds.Tables["YourTable"])
{
var value = row.Field<int>("ID"); // etc
}
Sia DataSet e DataTable esporre un metodo che CreateDataReader crea un DataTableReader. Controllare questi collegamenti -
http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx
http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx
Non è possibile convertire un DataSet a un DbDataReader.
È tuttavia possibile creare un DbDataReader che leggerà i risultati dal DataSet chiamando il metodo CreateDataReader sul DataSet.
Tuttavia, questa sembra una cosa strana da voler fare. È possibile semplicemente scorrere i risultati contenuti nel DataSet utilizzando la proprietà Tables di DataSet e la proprietà The Rows di DataTable. L'utilizzo di un DbDataReader potrebbe limitare l'inoltro solo ai risultati. L'unico vantaggio che posso vedere usando DbDataReader sarebbe se avessi una chiamata API per effettuare quale richiesto come parametro.
Se il DataSet è il risultato di un comando SELECT da un database, è possibile ottenere un DbDataReader chiamando DbCommand.ExecuteReader(). Questo eliminerà del tutto il DataSet e darà come risultato qualcosa di più efficiente.
mi sembra che ci sia un difetto in quello che si sta cercando di fare. Cosa stai cercando di fare ad un livello superiore? – Dann
Non puoi. Se vuoi ulteriori spiegazioni, ti preghiamo di fornire maggiori informazioni. –