C#使用using语法自动关闭SQLConnection数据库连接
C#使用using语法自动关闭SQLConnection数据库连接
在C++中,对象只要使用完毕,就会自动调用其析构函数。这对于设计基于资源的类的人员来说,是一个非常好的消息,因为如果用户忘记关闭资源,使用析构函数是非常理想的。只要对象使用完毕,就会调用C++析构函数。所以,如果出现了异常,但没有捕获,有析构函数的所有对象就会调用它们的析构函数。
在C#和其他托管语言中,没有自动、决定性的析构方式,而是有一个垃圾收集器,它会在未来的某个时刻释放资源。它是非决定性的,因为我们不能确定这个过程在什么时候发生。忘记关闭数据库连接可能会导致.NET可执行程序的各种问题。幸运的是,我们还有解决的方法。下面的代码说明了如何使用using子句确保实现IDisposable接口(详见第4章)的对象在退出块时立即被释放。
string connStr = String.Format("server={0};user id={1}; password={2}; database={3}; pooling=false",@"192.168.8.196", @"robot", @"robot", @"robot");
using(conn = new MySqlConnection(connStr))
{
//Open the connection
conn.Open();
//Do somthing useful
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
在这个实例中,无论块是如何退出的,using子句都会确保关闭数据库连接。查看一下连接类的Dispose()方法的IL代码,它们都检查连接对象的当前状态,如果其状态为打开,就调用Close()方法。浏览.NET程序集的一个强大工具是Reflector(可以从/www.aisto.com/roeder/dotnet/上获得)。这个工具允许查看任何.NET方法的IL代码,还可以把IL代码反编译为源代码,让我们轻松地确定给定的方法的作用。
在编程时,应至少使用这两个方法中的一个,或者两个方法都使用。无论在哪里获得资源,最好都使用using ()语句,因为尽管我们都会编写Close()语句,但有时会忘记,此时using子句就会发挥作用。这两种方式都没有好的异常处理方式来替代。如果在using块中出现了异常,using子句就会确保在资源上调用IDisposable.Dispose方法,在本例中将确保总是关闭数据库连接。这样,与必须确保在异常子句中关闭连接相比,代码的可读性更高。
最后,如果编写一个封装资源的类,无论该资源是什么,都应实现IDisposable接口,关闭资源。这样,任何使用该类的代码都可以利用using()语句,以确保资源被释放。

使用System.Data.OracleClient组件搭建Oracle数据库连接获取DataTable|C/S开发框架
FastReport.NET 2023使用DataTable报表数据源配置MsSqlDataConnection连接|C/S开发框架
达梦数据库使用DmBulkCopy批导数据解决方案|C/S开发框架
SqlConnectorV6.1 | 数据库连接工具|C/S开发框架
使用.NET8/EFCore访问达梦数据库|C/S框架网|C/S开发框架
Oracle:EFCore使用OracleBulkCopy实现批量导入数据|C/S开发框架
MySql数据库连接字符串(ConnectionString)配置参数大全|C/S开发框架
C# .NET8使用NPOI导出数据到Excel文件
SqlConnectorV6.0 | 数据库连接工具操作手册|C/S开发框架
使用HtmlAgilityPack.HtmlDocument彻底清除HTML标签-C/S开发框架
C#使用Graphics合成二维码和头像的分享图(小程序分享、App分享)-C/S开发框架
C# ASP.NET使用ashx一般处理程序实现上传文件功能-C/S开发框架
在ASP.NET Core web API中使用Swagger/OpenAPI(Swashbuckle)-C/S开发框架
C# LINQ使用案例参考-C/S开发框架
C#多线程使用读写锁ReaderWriterLockSlim同步写入文件-C/S开发框架
C#直接使用DllImport外部Dll的方法-C/S开发框架
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
