2009-01-12 99 views
0

我目前在ASP.NET(3.5)應用程序中編寫C#類以處理所有數據庫查詢。其中一些方法可用於對數據庫進行選擇查詢。在該方法內我只需要一個SqlDataReader r = command.ExecuteReader();來獲取數據。在C#/ ASP.NET中存儲SqlDataReader對象?

我現在想要r由方法返回,但是當我關閉數據庫連接時,datareader關閉並且對象不再包含任何東西。想到把所有東西都放到一個字符串數組中,但是如果我的數據庫中有整數和文本字段混合,這是不現實的。是否有一種簡單的(「預製」)方式將數據存儲在某個對象中以返回?

+0

一個DataReader應該在的情況下使用,你不希望一次獲得全部數據的ORM的。 DataTables(和DataSet)用於您在一次填充中讀取數據的情況。 – 2009-01-12 23:34:02

回答

3

您可以使用一個DataTable和SqlDataAdapter的:

using(SqlDataAdapter adap = new SqlDataAdapter(cmd)) 
{ 
    adap.fill(myDataTable); 
} 

return myDataTable; 
+0

或使用數據表加載方法 - myDataTable.Load(myReader); – 2009-01-12 23:47:03

0

您可以的CommandBehavior正好被設置爲closeconnection。 ,然後當您調用r.close 時,基礎連接將關閉。

+0

+1逆轉驅動器downvoter;這是針對具體問題的正確答案,但是OP當然不正確地使用datareader ;-) – 2009-01-13 01:12:35

2

通常,結果要塞入集合或數據表中。從不需要實例化對象並存儲它們的角度來看,數據表容易一些。

1

你有沒有想過使用LINQ或類似subsonic