0

C#でSQL接続にブロックを使用する場合using、これもクローズメソッドですか?メソッドを明示的に使用する必要があるので、質問していますcon.Open()。私はこの例を見つけました:

using (SqlConnection con = new SqlConnection(connectionString))
{
   con.Open(); // open method

   string queryString = "select * from db";
   SqlCommand cmd = new SqlCommand(queryString, con);
   SqlDataReader reader = cmd.ExecuteReader();
   reader.Read();

   ???         // What about a close method?
}

または、usingブロックは接続自体を閉じますか?

4

5 に答える 5

0

あなたはそれを閉じる必要はありません-using十分です。MSDNによると:

次のコードフラグメントに示すように、接続が常に閉じられるようにするには、usingブロック内で接続を開きます。そうすることで、コードがブロックを終了するときに接続が自動的に閉じられるようになります。

于 2013-03-25T10:07:08.760 に答える
0

using次のように変換されます。

SqlConnection con = new SqlConnection(connectionString)
try
{
   con.Open(); <-- open method

   string queryString = "select * from db";
   SqlCommand cmd = new SqlCommand(queryString, con);
   SqlDataReader reader = cmd.ExecuteReader();
   reader.Read();
}
finally
{
    if (con!= null)
        ((IDisposable)con).Dispose();
}

ここで、((IDisposable)con.Dispose();閉じられるものを閉じます。

于 2013-03-25T10:07:14.373 に答える
0

Closeいいえ、の-Methodを呼び出す必要はありませんSqlConnection。使用終了時に廃棄されると、自動的に閉じます。(-Disposeメソッド呼び出しClose()[1]

于 2013-03-25T10:08:07.717 に答える
0

他の答えは正しいですが、もう少し明確にしたいと思います。MSDNは次のように述べています

CloseDisposeは機能的に同等です。

を使用usingするとDispose、別の呼び出しを呼び出すClose必要がないためです。

于 2013-03-25T10:09:40.070 に答える
0

'using'キーワードを使用して、その中に接続を作成する場合。閉じ括弧に達したときに「using」キーワードのスコープがある限り、接続は開いています。接続はスコープ内で定義されており、スコープが存在しないため、接続は自動的に閉じられます。

つまり、スコープ内でのみアクセスできるローカル変数として扱います。これがお役に立てば幸いです。

于 2013-03-25T10:18:50.603 に答える