SQLite データベース間でデータを移動するコンソール アプリケーションを作成しています。接続のクラスとさまざまな準備済みステートメントは IDisposable を実装しているため、次のusing
ようにブロックを使用してこれらのオブジェクトをインスタンス化しています。
using (SQLiteConnection sqlite_conn = new SQLiteConnection(connectionString))
{
sqlite_conn.Open();
using (SQLiteCommand sqlite_cmd = new SQLiteCommand())
{
sqlite_cmd.Connection = sqlite_conn;
sqlite_cmd.CommandText = "INSERT INTO SOMETHING SOMETHING;";
sqlite_cmd.ExecuteNonQuery();
}
sqlite_conn.Close();
}
ただし、これらの接続を 1 つのメソッドで作成し、別のメソッドで呼び出すことができる必要があります。これらの接続をインスタンス変数として保存するための最もクリーンで混乱の少ない方法は何ですか? それらのメソッドがインテリジェントな方法で呼び出されることを確認したいのですが、すべてのアクションが単一のブロック.Dispose()
のコンテキスト内で発生することを確認する良い方法がわかりません。using
これはC#の初心者の質問であることを認識しているので、そのように回答を調整してください。提案された解決策がある場合は、説明するコード サンプルを含めていただければ幸いです。
編集:私のユースケースはコンソールアプリです。ソースと宛先の接続文字列が渡され、コンソール アプリが操作を実行します。実際に、コンソール クラス Program 自体に IDisposable を次のように実装させるでしょうか?:
class Program : IDisposable
{
private SQLiteConnection sourceConnection;
private SQLiteConnection destinationConnection;
public void Dispose()
{
sourceConnection.Dispose();
destinationConnection.Dispose();
}
}