-2

クラスファイルで以下のコードを使用しており、この関数にアクセスして接続を開き、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)
            {
            }
        }
4

2 に答える 2

1

ステートメントは、取得、使用、廃棄のusing3つの部分に変換されます。

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

詳細については、MSDNの記事を参照してください。

于 2013-03-10T11:30:06.167 に答える
0

OleDbCommandで必要になるため、開いている接続を返す方がよいでしょう。必要に応じて、Commonクラスでも接続を非表示にしますが、usingステートメントに保持すると、ステータスを取得するときに開いている接続がないため、基本的にtrueが返されると、実際の接続は閉じられます(そして破棄されます)。次のようなものにリファクタリングします。

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)
     {
     }
}
于 2013-03-10T11:43:01.467 に答える