0

SQL Server (切断モード) に接続して Windows フォーム アプリケーションを実行しています。アプリケーションで処理するすべてのアクションには、接続が必要です。そのため、接続を閉じる場所がわかりません。

接続を閉じないとどうなるか尋ねています。表示される実行時エラーがないことはわかっています。しかし、表示される可能性のある他のエラーはありますか?

4

1 に答える 1

1

各メソッドに同じ接続を使用している場合、プライベート フィールドまたは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 { }ブロックにラップして、実行時にエラーを処理できます。

于 2016-05-07T17:04:41.307 に答える