调用ADO.NET重要特性说明

开发 后端
为每一个软件行业的从业人员,无论是开发人员、项目经理、还是测试人员,也要不断适应这个趋势,我认为调用ADO.NET只会使我们的工作更简单和更轻松。

对于微软出来的调用ADO.NET的使用说明,及MSDN站点都推荐大家使用ADO.NET,用这样的方式来创建Connection,调用ADO.NET会自动执行Connection.dispose()方法,所以能够确保Connetion被及时的关闭。

那么及时的调用.dispose()真的这么重要么,调用ADO.NET如果一个对象超出了生存空间,在.net中不是会自动被GC(垃圾回收器)自动清理的么?

这个问题其实是由于GC导致的,.net中使用的GC,他对于工作并不像我们这样勤奋。调用ADO.NET只有当外界环境极其恶劣的时候(没有足够的内容分配的时候)他才会动手打扫卫生(清理不使用的对象)。所以对于Connection 即使超出了变量的生命周期,它可能还没有被GC干掉。

依旧未将调用ADO.NET返回给Connection Pool,所以这就导致了下一个连接可能会有调用ADO.NET中没有Available的Connection而从新打开一个新的连接,无端的浪费了多余的性能。所以ADO.net team反复强调要及时的关闭当前的连接。一个***的方法就是使用using{}block 系统会在退出{}的时候自动调用connection.dispose方法,而dispose会自动去执行close方法,释放当前的connection。

其实Connection.dispose方法就是call了一次close方法,所以两者是等同的。也就是说,如果您及时的执行了connection.close()方法,就没有必要必须再把connection包裹在一个using(){}中。#t#

如果使用调用ADO.NET是必需的,那么如果程序结构导致我无法使用using(){}来包裹我的Connection,比如说我的Connection是同一个help类返回的,那我又怎么办呢?

这是一个经常遇到的问题。在这样的环境中,我们无法将整个connection包裹在一个connection中。解决这样的方法有两个,一个就是修改您的代码结构。传入一个ConnectionString来返回调用ADO.NET。另一个方法就是反复检查您的代码,是否及时关闭了Connection。

因为Close的效果与dispose是相同的。但是如果不使用using(){}这个及时关闭Connection的任务就等于是交到了我们自己的手上,而不再由.net framework为我们把关了。

责任编辑:chenqingxiang 来源: 中文业界资讯站
相关推荐

2009-12-25 10:17:27

2009-12-21 17:29:43

ADO.NET模型

2009-12-22 17:43:26

ADO.Net技术

2009-12-22 11:17:58

ADO.NET产品

2009-12-30 16:05:20

ADO.NET实例

2009-11-11 15:09:35

ADO.NET数据集

2009-12-21 10:37:05

Ado.Net 实例

2009-12-31 15:31:15

ADO.NET特性

2009-11-04 15:44:39

ADO.NET Sql

2009-11-04 13:20:28

ADO.NET Dat

2009-12-21 13:59:03

ADO.NET特性

2009-12-21 11:29:13

Ado.Net代码

2010-01-04 09:03:57

ADO.NET连接对象

2009-12-22 09:15:02

ADO.NET功能

2009-12-18 17:01:21

ADO.NET数据

2009-12-21 14:55:49

ADO.NET属性

2010-01-04 13:16:31

ADO.NET命令

2009-12-30 15:11:35

ADO.NET数据

2009-12-21 14:04:48

ADO.NET参数

2009-03-12 11:26:35

Data ServicADO.NET.NET
点赞
收藏

51CTO技术栈公众号