2010-08-20 15 views
5

DataSet'i DataReader'a nasıl dönüştürebilirim?DataSet a'yı DataReader'a nasıl dönüştürebilirim?

+2

Ne yapmaya çalışıyorsunuz ne bir kusur var hissediyorum. Daha yüksek seviyede ne yapmaya çalışıyorsun? – Dann

+0

Yapamazsınız. Daha fazla açıklama istiyorsanız, lütfen daha fazla bilgi verin. –

cevap

13

Sen DataReader için veri kümesini değiştirmek için aşağıdaki kodu kullanabilirsiniz:

DataTableReader rd = ds.Tables[0].CreateDataReader(); 
0

DataSet bir DataTableReader yaratacak olan CreateDataReader adlı bir yöntem vardır, ama bir DataReader oluşturabilir sanmıyorum.

DataSet.CreateDataReader

0

DataSetDataAdpater bir kopuk bellek amacıdır. DataReader bağlı tek yönlü bir nesnedir.

Yani, bu mümkün değil.

Gerçekten gerekli mi?

+0

https://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader(v=vs.110).aspx - Veri kaynağından ileriye doğru bir satır akışı okur. Veritabanına 'Bağlandı' olmaktan başka bir şey söylemez. – JJS

0

DataSet üzerinden yineleme yapmak isterseniz, DataReader'a ihtiyacınız yoktur.

foreach(var row in ds.Tables["YourTable"]) 
{ 
    var value = row.Field<int>("ID"); // etc 
} 
0

Bir DbDataReader bir DataSet dönüştürmek olamaz. Ancak, DataSet'teki CreateDataReader yöntemini çağırarak, DataSet'ten sonuçları okuyacak bir DbDataReader oluşturabilirsiniz. Bununla birlikte, bu yapmak istemek garip bir şey gibi görünüyor. DataSet'in DataSet ve The Data özelliği için DataSet özelliğini kullanarak DataSet içinde bulunan sonuçları yineleyebilirsiniz. Bir DbDataReader kullanmak, yalnızca sonuçlara erişimi yönlendirmek için kısıtlayacaktır. Bir parametre olarak gerekli olanı yapmak için bir API çağrısı olsaydı, bir DbDataReader'ı kullanmanın tek yararı olurdu.

DataSet'iniz bir veritabanından SELECT komutunun sonucuysa, DbCommand.ExecuteReader() öğesini çağırarak bir DbDataReader alabilmeniz gerekir. Bu DataSet'i tamamen ortadan kaldıracak ve daha verimli bir şeyle sonuçlanacaktır.

İlgili konular