1

データベースに対して機能するヘルパー メソッドの小さなクラスを作成しました。私はこの方法について疑問に思っています:

Shared Function GetReader(sql As String, con As OleDbConnection) As OleDbDataReader

   Dim cmd As New OleDbCommand(sql, con)
   Dim reader As OleDbDataReader = cmd.ExecuteReader
   cmd.Dispose()
   Return reader

End Function

まず Command オブジェクトを破棄してから DataReader を使用すると、何らかの問題が発生するのでしょうか?

Command オブジェクトを常に作成/破棄しないことで、コードをきちんと呼び出し続けることをお勧めします (上記のヘルパー メソッドでラップできる場合は冗長に思えます)。

4

2 に答える 2

2

まず Command オブジェクトを破棄してから DataReader を使用すると、何らかの問題が発生するのでしょうか?

いいえ

しかし、これはよりクリーンなコードです:

Shared Function GetReader(sql As String, con As OleDbConnection) As OleDbDataReader

   Using cmd As New OleDbCommand(sql, con)
      Dim reader As OleDbDataReader = cmd.ExecuteReader
      'cmd.Dispose() 'Not needed here, will be invoked automatically
      Return reader
   End Using

End Function

補足:

  • Using Statementsすべてのリソースが解放されていることを確認するために always を使用することを検討してください

  • 接続とリーダーが不要になったら、それらを破棄することを検討してください。また、接続はデフォルトでプールに保持されるため、接続を閉じてから再度開くことを恐れないでください。特にアプリケーションに何らかの負荷がかかっている場合は、できるだけ早く閉じる必要があります。

于 2014-10-08T04:35:35.557 に答える