1

当您将活动的 IDataReader 对象分配给 Repeater、GridView 等时,它会在 DataBind 方法调用完成后自动关闭,还是我们仍需要自己显式关闭它?

this.sampleRepeater.DataSource = ExampleDAL.GetIDataReader();
this.sampleRepeater.DataBind();
4

3 回答 3

2

使用 DataReader 类型时,连接需要在您访问数据时保持打开状态。这不是一个断开连接的数据源,比如 DataTable。您必须自己关闭它,否则您正在等待它死于自然原因:)。

对替代品感兴趣?将您的数据放入 DataTable、DataSet,或将返回的行转换为自定义对象列表并返回其中之一。

希望有帮助!

于 2009-03-19T15:53:10.817 回答
0

我相信你必须自己关闭它。例如,Repeater 的 DataBind 不会关闭其数据源。如果它不是 IDataSource,那么它只是将其转换为 IEnumerable 并调用 foreach。

于 2009-03-19T15:21:11.550 回答
0

我使用反射器检查了中继器的代码,它没有关闭 IDataReader。你必须自己做。

于 2009-03-19T15:47:54.170 回答