SqlConnection.Close 方法

定义

关闭与数据库之间的连接。 此方法是关闭任何打开连接的首选方法。

public:
 override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()

例外

打开连接时出现的连接级别的错误。

示例

以下示例创建 一个 SqlConnection,打开它,显示其一些属性。 连接在块的 using 末尾自动关闭。

using Microsoft.Data.SqlClient;

class Program1
{
    static void Main()
    {
        string s = GetConnectionString();

        OpenSqlConnection(s);
        Console.ReadLine();
    }

    private static void OpenSqlConnection(string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
            Console.WriteLine("State: {0}", connection.State);
        }
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file, using the 
        // System.Configuration.ConfigurationSettings.AppSettings property 
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI;";
    }
}

注解

方法 Close 回滚任何挂起的事务。 然后,它会释放与连接池的连接,或者关闭连接(如果禁用连接池)。

注意

使用 Transact-SQL BeginTransaction 启动的挂起事务,如果启用了连接池,则连接重置时会自动回滚。 如果连接池处于关闭状态,则调用 后 SqlConnection.Close 将回滚事务。 通过 System.Transactions 启动的事务通过 System.Transactions 基础结构进行控制,不受 影响 SqlConnection.Close

应用程序可以多次调用 Close 。 不会生成异常。

SqlConnection如果 超出范围,则不会关闭。 因此,必须通过调用 CloseDispose显式关闭连接。 CloseDispose 在功能上是等效的。 如果连接池值 Pooling 设置为 trueyes,则基础连接将返回到连接池。 另一方面,如果 Pooling 设置为 falseno,则关闭与服务器的基础连接。

备注

从连接池中提取连接或将连接返回到连接池时,服务器上不会引发登录和注销事件,这是因为在将连接返回到连接池时实际上并没有将其关闭。 有关详细信息,请参阅 SQL Server 连接池 (ADO.NET)

注意

不要在 类的 方法中Finalize调用 CloseDispose 对 Connection、DataReader 或任何其他托管对象调用 或 。 在终结器中,应仅释放类直接拥有的非托管资源。 如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize 方法。 有关详细信息,请参阅垃圾回收

适用于