SQL 接続の開閉について質問があります。どちらの方がよいですか:
- イベントで接続を開き、
form_load
イベントで閉じform_closing
ます。 - 通話ごとに接続を開いたり閉じたりします。
もちろん、頻繁にデータを読み取る必要がある場合もあります。
一般に、データベース接続をできるだけ短時間開いたままにしておく必要があります。
そのため、すべての呼び出しに対して各接続をusing
ブロックで開いて閉じ、廃棄を確実にします。
フォームでこれがまったく発生してはならないことを追加します-フォームはUIおよびUIイベントの処理に関係する必要があります-接続の開閉はデータアクセスレイヤーで発生する必要があります。
1を選択した場合は、方法2を選択することをお勧めします。他の問題が発生する可能性があります
絶対に2番に行く必要があります。特に、ユーザーが接続をどのくらいの期間占有するかわからないフォームでは。
接続を宣言するときにUsingステートメントを使用することを忘れないでください。これにより、何が起こっても接続が再び閉じられることが確実になります。
ベスト プラクティスは、できるだけ早く sqlconnection を閉じることです。そのため、次のように (IDisposable インターフェイスを実装する) sqlconnection を使用します。
using (SqlConnection con = new SqlConnection(connectionString))
{
//
// Open the SqlConnection.
//
con.Open();
//do your process
}
接続をいつどのように使用するかによって異なります。ただし、プールで接続を利用できるようにすることで、複数の接続の開閉を軽減する接続プールを有効にする必要があります。
データベースとのやり取りは常に必要というわけではないので、2 番目に考えます。通常、データをロードしてデータを保存します。接続を長時間開いていると、データベースとのやり取りが激しく、接続を開いたり閉じたりするとコストがかかる場合に便利です。データベースと対話するためのコードは、UI から分離し、データ アクセス レイヤーに配置する必要があります。データベース操作を実行するクラスの個別のライブラリを作成するか、少なくとも同じプロジェクトでデータベースのクラスを作成できます。
接続を開くための一般的なギルド ラインは、接続をできるだけ遅く開き、接続をできるだけ早く閉じることです。
必要に応じて接続を開いたり閉じたりすることをお勧めします。接続プーリングのおかげで、接続を開くのはかなり安価であり、接続がまだ開いていることを確認するために使用するたびに接続をチェックする必要がありません。