2009-01-12 102 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