注册 登录
编程论坛 ASP.NET技术论坛

析构函数

hhy420459674 发布于 2010-05-26 10:06, 677 次点击
我在后台代码中写了构造函数和析构函数,请问各位,怎么我写了后就程序运行页面都打不开了呢?

构造函数中:我连接了数据库  析构函数中:我关闭了数据库连接

在各个事件或者方法中我就没有再连接和关闭了...

请问那是怎么回事??
5 回复
#2
冰镇柠檬汁儿2010-05-27 10:15
析构函数,好遥远的年代的名词了,在C#里应该叫析构方法吧,呵呵
数据库打开和关闭的方法应该单独写一个,而不是写在构造方法和析构方法中,你可能认为这样我在定义一个类的对象的时候打开了数据库,而对象消失的时候就关闭了数据库,可是我问你,你如果在一个页面内定义了类的对象,只要这个页面不关闭,对象就不会消失,那么数据库连接就会一直被这个页面占据,数据库连接数量有限,更多的人访问时就会造成无法连接数据库,你这也写,就占用了数据库连接而不关闭。
如果你用的是net 2005以上的版本,你就只需要open就可以了,至于close,NET自己就能替你管理,不用你操心。

[ 本帖最后由 冰镇柠檬汁儿 于 2010-5-27 10:22 编辑 ]
#3
hhy4204596742010-05-27 11:26
.Net自己给我管理啊?那我不用写con.Close()代码了哦,不会吧??
#4
冰镇柠檬汁儿2010-05-27 12:06
是的,并且即使你写了close,它也不给你关,实际上net2.0以上的版本采用了数据库连接池技术,来管理数据库连接,但是出于好的编码习惯来说,还是写close的。
#5
冰镇柠檬汁儿2010-05-27 12:08
但是,楼主你要是把open写在构造方法里,那就不一样了,不到对象消失,net是不会替你管理的
#6
hhy4204596742010-05-27 15:02
恩  知道了 谢谢!
1