Jak przekonwertować zestaw danych do modułu DataReader?Jak przekonwertować DataSet a na DataReader?
Odpowiedz
Można użyć następującego kodu do zmiany zestawu danych do DataReader
:
DataTableReader rd = ds.Tables[0].CreateDataReader();
DataSet
ma metodę zwaną CreateDataReader
który stworzy DataTableReader
, ale nie sądzę, że można stworzyć DataReader
.
zestaw danych jest odłączony obiekt w pamięci. DataReader jest połączonym obiektem jednokierunkowym.
Sądzę więc, że nie jest to możliwe.
Czy to naprawdę potrzebne?
https://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader(v=vs.110).aspx - Odczytuje strumień wyjściowy z źródła danych tylko do przodu. Nie mówi nic o byciu "połączonym" z bazą danych. – JJS
Jeśli chcesz wykonać iterację za pomocą DataSet, nie potrzebujesz modułu DataReader. Rekord jest odłączony obiekt w pamięci tak iteracyjne thru to użyciem-każda:
foreach(var row in ds.Tables["YourTable"])
{
var value = row.Field<int>("ID"); // etc
}
Oba zestawy danych i DataTable odsłonięcia CreateDataReader sposobu, który tworzy DataTableReader. Sprawdź te linki -
http://msdn.microsoft.com/en-us/library/system.data.dataset.createdatareader.aspx
http://msdn.microsoft.com/en-us/library/system.data.datatable.createdatareader.aspx
Nie można konwertować DataSet do DbDataReader.
Można jednak utworzyć DbDataReader, który odczyta wyniki z DataSet, wywołując metodę CreateDataReader na DataSet.
Jednak wydaje się to dziwną rzeczą do zrobienia. Możesz po prostu powtórzyć wyniki zawarte w DataSet za pomocą właściwości Tables DataSet i The Rows właściwości DataTable. Używanie DbDataReader ograniczyłoby ci przekazywanie tylko dostępu do wyników. Jedyną korzyścią jaką widzę przy korzystaniu z DbDataReader byłby wywołanie API, które wymagałoby jednego jako parametru.
Jeśli twój zestaw danych jest wynikiem polecenia SELECT z bazy danych, powinieneś być w stanie uzyskać DbDataReader przez wywołanie DbCommand.ExecuteReader(). Spowoduje to całkowite odcięcie zestawu DataSet i sprawi, że będzie on bardziej wydajny.
czuję istnieje luka w to, co staramy się robić. CZY próbujesz zrobić na wyższym poziomie? – Dann
Nie możesz. Jeśli chcesz uzyskać więcej wyjaśnień, podaj więcej informacji. –