菜鸟初学者 datareader,dataset

1、datareader如果不关闭,会出现什么错误
2、为什么dataset作为数据集使用完成后不用关闭

DataReader不关闭,如果这个DataReader定义在函数体内,那么在函数返回后,它会被垃圾回收,从而触发析构函数,然后调用Dispose,然后调用Close,还是会关闭的。

但是如果是成员变量,那么回收的会更晚一些。

Dataset也是一样。

建议你找正规的书去学习,而不是看一些编写粗糙本身代码不严谨的所谓“教程”上的代码,这些代码不值得你学习。而且应该先搞清楚原理。

1、datareader不关闭,会造成数据库连接被占用,如果达到数据库连接池的连接数的上限的话,就会引发异常。
2、dataset是一次性读到内存中的,不需要始终与数据库保持连接,所以读完一次就自动与数据库断开连接了,因此不需要关闭。

dataset只是个数据容器,为何使用完要关闭? 关闭什么呢?

作为最佳实践,应该释放DataSet并且关闭它关联的数据连接:
ds.Dispose();
conn.Close();