DBに接続してDataTableを取得するSQLクラスがあります。終了したらSqlConnectionを破棄する必要があることを認識しています。私はこれがusing
ブロックを使って行うことができることを知っていますが、Dispose()
コールをこのクラスのデストラクタ内に置くことも可能ですか?SQL接続の廃棄
Herreが私のコードです:
public class SQLEng
{
//Connection String Property
//Must be set to establish a connection to the database
public string ConnectionString{ get; set; }
SqlConnection _Conn;
//Overridden Constructor enforcing the Connection string to be set when created
public SQLEng(string connectionString)
{
ConnectionString = connectionString;
_Conn = new SqlConnection(connectionString);
}
//ensure the SqlConnection is disposed when destructing this object
public ~SQLEng()
{
_Conn.Dispose();
}
//various other methods to get datatables etc...
}
は基本的に私は、DBにアクセスするすべてのメソッド内SqlConnectionオブジェクトをインスタンス化するのではなく、クラス変数SqlConnectionオブジェクトを持つことを望みます。これは健全な練習ですか?
デストラクタの呼び出しが保証されていません。あなたはおそらく 'SQLEng'を使い捨てにする必要があります。また、処分を処理するために_it_のユーザに依存するべきです。 –
ありがとう@ m.babcock、私はYuckのアドバイスを受け取り、必要なときに接続を開いて閉じてしまうと思います。私はむしろ、他のクラスでDBアクセスが必要になるたびにDispose()を呼び出す必要はありません。単にこのクラスでまとめようとしています。 – Simon