首页 理论教育 使用C#编程连接的实用指南

使用C#编程连接的实用指南

时间:2023-10-22 理论教育 版权反馈
【摘要】:在一般情况下,当在.NET中使用数据库连接时,要确保在使用每个资源后立即关闭。在极端的情况下,不关闭连接会使其他用户无法进入一整组数据表,极大地降低了应用程序的性能。1)使用using指令引用SQL Server数据库。这样并不能确定这个过程在什么时候发生,忘记关闭数据库连接可能会导致.NET可执行程序的各种问题。并且无论语句块是如何退出的,using子句都会关闭数据库连接。

使用C#编程连接的实用指南

在一般情况下,当在.NET中使用数据库连接时,要确保在使用每个资源后立即关闭。尽管.NET的设计人员实现了自动的垃圾收集,垃圾最终都会被回收,但仍需要尽可能早地释放资源,以避免出现资源匮乏的情况。

当编写访问数据库的代码时,因为使连接打开的时间略长于需要的时间,这样可能会影响其他会话。在极端的情况下,不关闭连接会使其他用户无法进入一整组数据表,极大地降低了应用程序的性能。为此关闭数据库连接,要将一直处于打开状态的资源删除。

在C#中,有如下两种方式可以确保数据库连接等类资源在使用后立即释放。

1.利用try…catch…finally语句块

利用try…catch…finally语句块实现连接优化的流程比较简单,例如下面的代码:

978-7-111-36370-5-Part03-617.jpg

978-7-111-36370-5-Part03-618.jpg

上述实例文件的设计流程如下。

1)使用using指令引用SQL Server数据库。

2)定义对象mm,设置和Northwind数据库的连接参数。

3)利用try…catch…finally语句块实现和Northwind数据库的连接。

将上述代码保存为“光盘:\daima\17\cachlianjie”,执行后将在控制台内输出数据库的数据,如图17-10所示。

978-7-111-36370-5-Part03-619.jpg(www.xing528.com)

图17-10 输出数据库数据

在上述finally块中,可以释放已经使用的任何资源。这种方式的缺点是必须确保关闭连接,初学者很容易忘记在finally块中添加关闭连接的命令,所以应在编码风格上添加不容易出现反常情况的内容。

2.使用using语句块

在C++中,只要某对象使用完毕后就会自动调用其析构函数。所以一旦出现了异常,若没有捕获,有析构函数的所有对象就会调用它们的析构函数。

在C#和其他托管语言中,没有自动、决定性的析构方式,而是有一个垃圾收集器,它会在未来的某个时刻释放资源。这样并不能确定这个过程在什么时候发生,忘记关闭数据库连接可能会导致.NET可执行程序的各种问题。但是可以使用using子句来解决问题,看下面一段代码:

978-7-111-36370-5-Part03-620.jpg

978-7-111-36370-5-Part03-621.jpg

在上述代码中,通过using子句实现IDisposable接口对象在退出块时立即被释放。并且无论语句块是如何退出的,using子句都会关闭数据库连接。

在编程时,至少应该使用上述两种方法中的一个,或者两种方法都使用。无论在哪里获得资源,最好都使用using()语句。上述方式都没有好的异常处理方式来替代,所以在大多数情况下,最好组合使用这两种方法。例如下面的代码:

978-7-111-36370-5-Part03-622.jpg

这样,如果在using块中出现了异常,using子句就会确保在资源上调用IDisposable.Dispose方法,在上述代码中将确保总是关闭数据库连接。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈