使用c#关闭打开的连接

本文关键字:连接 使用 | 更新日期: 2023-09-27 18:03:15

我在类文件中使用以下代码并访问此函数以打开连接,它返回true。我想关闭这个连接状态,我做不到。请帮我做这件事。

common.cs
=========
 public static bool DBConnectionStatus()
        {
            try
            {
                string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|db_gym.mdb; Jet OLEDB:Database Password=gym_admin";
                using (OleDbConnection conn = new OleDbConnection(conString))
                {
                    conn.Open();
                    return (conn.State == ConnectionState.Open);
                }
            }
            catch (OleDbException)
            {
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }

protected void btn_general_Click(object sender, EventArgs e)
        {
            try
            {
                bool state = common.DBConnectionStatus();
                if(state == true)
                {
                // Some operation
                }
                // I want to close this connection
            }
            catch (Exception e1)
            {
            }
        }

使用c#关闭打开的连接

一个using语句被翻译成三个部分:获取、使用和处置。

   using (OleDbConnection conn = new OleDbConnection(conString))
    {
       conn.Open();
       return (conn.State == ConnectionState.Open);
     //connection is automatically closed and disposed here
    }

更多信息请访问MSDN文章

您最好返回一个打开的连接,因为您在OleDbCommand中需要它。如果你喜欢,你也可以在Common类中隐藏连接,但是如果你把它保存在using语句中,当你获得状态时没有打开连接,所以基本上如果返回true,你的连接实际上是关闭的(和dispose)。像这样重构:

public OleDbConnection GetOpenConnection()
{
    string conString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|db_gym.mdb; Jet OLEDB:Database Password=gym_admin";
    OleDbConnection conn = new OleDbConnection(conString))
    conn.Open();
    return conn;
 }

protected void btn_general_Click(object sender, EventArgs e)
{
    try
    {
        using(OleDbConnection  openConnection = common.GetOpenConnection())
        {
           // I want to close this connection
           openConnection.Close(); // close asap
        }  // dispose
     }
     catch (Exception e1)
     {
     }
}