_System.Data.SQLite
_のSQLiteConnection
オブジェクトが2つの同様のメソッドを所有していることに気づきました。
Close()
Dispose()
SQLiteDataReader
オブジェクトについても同じです。
違いはなんですか ?
Dispose
は、接続が閉じられていない場合も閉じますが、Close
を呼び出すと、接続を再度開くことができます。これは、接続が破棄されている場合は不可能です。
一般に、Close
を呼び出さないでください。接続の作成をusing
ブロックでラップすることにより、disposeを暗黙的に呼び出します。
using (var connection = new SqlConnection(...))
{
// use connection here.
} // connection gets closed and disposed here.
Connection.Close()は、接続文字列で定義されているように、サーバーへの接続を単に閉じます。この時点以降、接続を使用/再開できます。
Connection.Dispose()
は完全にクリーンアップし、管理されていないすべてのリソースを削除して、その接続が再び使用されないようにします。破棄が呼び出されたら、そのオブジェクトを使用しようとしないでください。 Dispose(),
Close() `内では、すべて確実に呼び出されます。
可能であれば、using
のような構文を使用して、正しくクリーンアップされるようにすることをお勧めします。
using(SqlLiteConnection conn = new SqlLiteConnection(...))
{
// Do work here
}
これにより、例外がスローされても、接続が自動的に破棄されます。