0

次のようなものがあります

...
public DataTable GetList()
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();      
        // select from table 
    }
}

public void Insert()
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();      
        // Insert into table
    }
}

...

接続文字列をグローバル変数として定義し、操作後に破棄する方法はありますか?

// connection open

...

public DataTable GetList()
{
    // use global connection
}

public void Insert()
{
    // use global connection
}

...

// connection close

これどうやってするの?どのデザインパターンを使用できますか?

4

2 に答える 2

3

それが可能だ

 public class MyClass:IDisposable
{
    SqlConnection myCon;

    public MyClass() 
    {
        myCon = new SqlConnection(connectionString);
    }

    public DataTable GetList()
    {
        // use global connection
    }

    public void Insert()
    {
        // use global connection
    }



    public void Dispose()
    {
        myCon.Close();
    }
}

使用:

 using (MyClass myclass = new MyClass())
        {
           DataTable dt = myclass.GetList();
        }
于 2013-02-14T14:08:04.737 に答える
2

さて、SQL Server を使用しているので、そのように接続を開いたままにしておくことは良い習慣とは見なされません。

ADO.Net は、ConnectionPooling と呼ばれる機能を提供します。接続を開くと、プールがチェックされます。同じ接続文字列を持つ既存の接続が見つかった場合は、プールから返されるため、セットアップ時間は非常に短くなります。

接続を閉じると、プールに戻されます。

これは非常に効率的で、データベースへの接続が非常に高速になります。

編集

これは、このトピックに関する MSDN の記事です。http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

于 2013-02-14T13:56:40.217 に答える