给定OracleDataReader,如何返回整个结果集?

时间:2015-09-28 19:12:06

标签: c# .net-4.5

我有下面的代码,目前返回业务对象列表。虽然它有效,但我希望减少我们所处的重复代码量。由于下面的代码是特定于类型的 - 每个BO都有它自己的ConnecToDbAndGetItems()方法 - 这个整个方法对于每个BO都是重复的。

con.Open();
OracleDataReader dr = cmd.ExecuteReader();
BuildListOfItems(dr, ref itemsToReturn);
con.Close();
dr.Close();

我更喜欢这样的东西,一个易于管理的小增量变化:

con.Open();
OracleDataReader dr = cmd.ExecuteReader();

// Gimme all the data here and
// return that to another method for building BOs

con.Close();
dr.Close();

最终结果是一个通用数据检索机制,所有GetXXX()方法都可以调用,并将结果(数组,列表,???)传递给构建器对象以供进一步处理。

如何从读者那里获取所有记录?

1 个答案:

答案 0 :(得分:1)

您可以像这样使用DataTable:

DataTable result = new DataTable();
result.Load(dr);

我们在项目中使用了DataAdapter和DataReader。我可以说,DataReader提供了更好的性能。您应该设置FetchSize属性以获得更好的性能。