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 对象相同。并且如果发生任何异常,它将自动关闭连接。

更新于: 2020-11-25

736 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告