C# 中的连接池是什么,如何实现?
这些用于导入命名空间(或创建命名空间或类型的别名)。
这些位于文件的顶部,在任何声明之前。
using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button;
using 语句确保即使在创建对象并调用方法、属性等时发生异常,也会调用 Dispose()。Dispose() 是 IDisposable 接口中存在的一个方法,有助于实现自定义垃圾回收。换句话说,如果我们正在执行一些数据库操作(插入、更新、删除),但不知何故发生了异常,那么在这里 using 语句会自动关闭连接。不需要显式调用 connection Close() 方法。
另一个重要因素是它有助于连接池。.NET 中的连接池有助于消除多次关闭数据库连接。它将连接对象发送到池中以供将来使用(下一个数据库调用)。下次从您的应用程序调用数据库连接时,连接池会获取池中可用的对象。因此,它有助于提高应用程序的性能。因此,当我们使用 using 语句时,控制器会自动将对象发送到连接池,并且不需要显式调用 Close() 和 Dispose() 方法。
using (Stream input = File.OpenRead(filename)) { ... }
示例
string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"; using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers"; conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1)); } }
在上面的代码中,我们没有关闭任何连接,它将自动关闭。由于 using 语句,using 语句将自动调用 conn.Close()
(使用 (SqlConnection conn = new SqlConnection(connString)) 以及 SqlDataReader 对象相同。并且如果发生任何异常,它将自动关闭连接。
广告