2010-08-20 58 views
5

如何將DataSet轉換爲DataReader?如何將DataSet a轉換爲DataReader?

+2

我覺得有什麼你正在嘗試做的一大敗筆。你想在更高的層次上做什麼? – Dann 2010-08-20 09:56:21

+0

你不能。如果您需要更多解釋,請提供更多信息。 – 2010-08-20 09:47:40

回答

13

您可以使用下面的代碼更改數據集DataReader

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

DataSet有一個方法稱爲CreateDataReader這將創建一個DataTableReader,但我不認爲你可以創建一個DataReader

DataSet.CreateDataReader

0

DataSet是一個斷開連接的內存對象。 DataReader是一個連接的單向對象。

所以我想這是不可能的。

真的需要嗎?

+0

https://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader(v=vs.110).aspx - 從數據源中讀取只向前行的數據流。不說有關'連接'到數據庫。 – JJS 2015-12-02 17:59:35

0

如果要通過DataSet進行迭代,則不需要DataReader。數據集是一個斷開連接的內存對象所以使用的for-each直通迭代它:

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

您可以將數據集不能轉換爲的DbDataReader。

然而,您可以創建一個DbDataReader,它將通過調用DataSet上的CreateDataReader方法從DataSet中讀取結果。

但是,這似乎是一件奇怪的事情想要做。您可以使用DataSet的Tables屬性和DataTable的Rows屬性遍歷DataSet中包含的結果。使用DbDataReader會限制您只轉發對結果的訪問。我可以從使用DbDataReader看到的唯一好處是,如果您有一個API調用來使其中需要一個作爲參數。

如果您的DataSet是來自數據庫的SELECT命令的結果,您應該可以通過調用DbCommand.ExecuteReader()來獲取DbDataReader。這將徹底刪除DataSet並導致更有效的事情。