如果我没有显式关闭DataReader,在其超出其对象的作用域后会自动销毁吗?虽然我感觉不会,但还是想确认一下,如何查看是否已关闭?例如 windows应用程序中一个form class form1 : form
{
public form1()
{
....
reader = cmd.ExecuteReader(CommandBehiavor.CloseConnection);
}private btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}如上,如果我没有关闭reader,而是直接关闭窗体(不是退出程序),reader对象出了作用域会不会自动关闭和销毁?
{
public form1()
{
....
reader = cmd.ExecuteReader(CommandBehiavor.CloseConnection);
}private btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}如上,如果我没有关闭reader,而是直接关闭窗体(不是退出程序),reader对象出了作用域会不会自动关闭和销毁?
...
if(reader.IsClosed)
//上面那句敲错了
方法的内部不用关闭SqlDataReader。如果方法内需再次使用,需要先关闭
关闭连接即可
如果不关时间长的执行的次数多了!数据库就死翘翘了!我以前干过这样的事!
出了问题还找不到原因!
如果我没有显式关闭DataReader,在其超出其对象的作用域后会自动销毁吗?
我是说这句话 超出对象的作用域后不会马上自动销毁的
C#提供了一种语法,可以确保在对象引用超出作用域时,在执行IDisposable接口的对象上自动调用Dispose()。该语法使用using关键字来完成。
using (Test test = new Test()){
//代码
}
真的不会!我以前在项目中出现这个疏忽造成数据库运行一段时间后就无法连接!后来找到原因正是一个经常用到的reader没关闭!我的数据库oralce。