SQL Server (切断モード) に接続して Windows フォーム アプリケーションを実行しています。アプリケーションで処理するすべてのアクションには、接続が必要です。そのため、接続を閉じる場所がわかりません。
接続を閉じないとどうなるか尋ねています。表示される実行時エラーがないことはわかっています。しかし、表示される可能性のある他のエラーはありますか?
SQL Server (切断モード) に接続して Windows フォーム アプリケーションを実行しています。アプリケーションで処理するすべてのアクションには、接続が必要です。そのため、接続を閉じる場所がわかりません。
接続を閉じないとどうなるか尋ねています。表示される実行時エラーがないことはわかっています。しかし、表示される可能性のある他のエラーはありますか?
各メソッドに同じ接続を使用している場合、プライベート フィールドまたはGetConnection()
メソッドなどからのリスクがあります。接続がまだ開いているときに、読み取り/書き込みを試みることになる可能性があります。
これによりエラーがスローされ、ライブ SQL データベースを使用している場合は、ヒープ全体になる可能性があります。
using
可能であれば、DB にアクセスするたびに、ステートメントで接続の新しいインスタンスを作成します。
このような:
var connectionString = "YourConnectionStringToTheDB";
var queryString ="YourSQLQueryHere"; // FROM * IN tbl SELECT * etc...
using (SqlConnection connection = new SqlConnection(
connectionString))
{
using (SqlCommand command = new SqlCommand(queryString, connection))
{
command.Connection.Open();
command.ExecuteNonQuery();
}
}
using
このようにして、コードがステートメントのスコープ外で実行されると、閉じられて破棄されます。
SqlCommand も破棄using
できるため、ステートメントにも含まれていることに注意してください。
これはよりクリーンなコードであり、ガベージ コレクターによる破棄のためにオブジェクトをマークします。(Google はあなたの友達です) - BIG トピック。読むべきものがたくさん。
これは、より詳細な情報を提供する同様の質問です: The C# using statement, SQL, and SqlConnection
編集
さらに良いことに、SQL コードをtry { }
catch { }
ブロックにラップして、実行時にエラーを処理できます。