黑马程序员技术交流社区
标题:
关于关闭数据库问题
[打印本页]
作者:
陈育梅
时间:
2012-10-31 21:06
标题:
关于关闭数据库问题
什么情况下使用close(),什么情况下使用dispose()?
作者:
欧玉斌
时间:
2012-10-31 21:40
其实这个知识点我也不太清楚,我自己习惯使用using。而查询资料后得出,close和dispose还是有区别的, 不过区别并不大。大部分情况,使用close和dispose都是可以的。
资料博文:http://www.189works.com/article-58655-1.html
引用微软ADO.Team的经理的话说,sqlconnection的close和dispose实际是做的同一件事,唯一的区别是Dispose方法清空了connectionString,即设置为了null.
比如SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=northwind;User ID=sa;Password=steveg");
con.Open();
con.Close();
con.Open();
con.Dispose();
con.Open();
上例运行发现,close掉的connection可以重新open,dispose的不行,因为connectionstring清空了,会抛出异常,但请注意此时sqlconnection对象还在。
根据翻译,可以这么简单理解:
close是关闭对象,Dispose是销毁对象,垃圾回收机制。
而其实dispose也做了close的工作。Dispose会自动检查是否调用了close,如果close了,就直接Dispose,如果没有close,就先调用close再Dispose。
习惯性的做法是,
使用using程序块
,在离开using程序块的时候,CLR会自动调用类型所创建对象的Dipose方法。
作者:
黑马王亚男
时间:
2012-11-1 10:29
close()后,可以在接下来的操作中直接Open()来继续直接向数据库发送命令,无需进行繁琐的的连接操作。
dispose()会释放连接,必须重新connection。
作者:
郑鹏
时间:
2012-11-1 12:21
欧玉斌 发表于 2012-10-31 21:40
其实这个知识点我也不太清楚,我自己习惯使用using。而查询资料后得出,close和dispose还是有区别的, 不过 ...
记住这一点就可以:close是关闭对象,Dispose是关闭并且销毁对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2