2010-08-20 39 views
5

Làm cách nào để chuyển đổi một DataSet thành DataReader?Làm cách nào để chuyển đổi DataSet a thành DataReader?

+2

tôi cảm thấy có một lỗ hổng trong những gì bạn đang cố gắng làm. Bạn đang cố gắng làm gì ở cấp độ cao hơn? – Dann

+0

Bạn không thể. Nếu bạn muốn giải thích thêm, vui lòng cung cấp thêm thông tin. –

Trả lời

13

Bạn có thể sử dụng đoạn mã sau để thay đổi dữ liệu để DataReader:

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

DataSet có phương pháp gọi là CreateDataReader sẽ tạo một DataTableReader, nhưng tôi không nghĩ rằng bạn có thể tạo DataReader.

DataSet.CreateDataReader

0

Số liệu là một đối tượng trong bộ nhớ bị ngắt kết nối. DataReader là một đối tượng một chiều được kết nối.

Vì vậy, tôi đoán điều đó là không thể.

Có thực sự cần thiết không?

+0

https://msdn.microsoft.com/en-us/library/system.data.common.dbdatareader(v=vs.110).aspx - Đọc luồng luồng chỉ chuyển tiếp từ nguồn dữ liệu. Không nói gì về việc 'Kết nối' với cơ sở dữ liệu. – JJS

0

Nếu bạn muốn lặp lại thông qua DataSet, bạn không cần DataReader. DataSet là một đối tượng bị ngắt kết nối trong bộ nhớ để lặp qua nó bằng cách sử for-each:

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

Bạn không thể chuyển đổi một DataSet tới một DbDataReader.

Tuy nhiên, bạn có thể tạo DbDataReader để đọc kết quả từ DataSet bằng cách gọi phương thức CreateDataReader trên DataSet.

Tuy nhiên, điều này có vẻ như một điều kỳ lạ muốn làm. Bạn có thể đơn giản lặp qua các kết quả chứa trong DataSet bằng cách sử dụng thuộc tính Tables của DataSet và thuộc tính The Rows của DataTable. Sử dụng DbDataReader sẽ hạn chế bạn chỉ chuyển tiếp truy cập vào các kết quả. Lợi ích duy nhất tôi có thể thấy từ việc sử dụng DbDataReader sẽ là nếu bạn có một cuộc gọi API để thực hiện cuộc gọi API nào làm tham số.

Nếu Số liệu của bạn là kết quả của lệnh SELECT từ cơ sở dữ liệu, bạn sẽ có thể lấy DbDataReader bằng cách gọi DbCommand.ExecuteReader(). Điều này sẽ cắt ra DataSet hoàn toàn và kết quả trong một cái gì đó là hiệu quả hơn.

Các vấn đề liên quan