System.Data.SqlClient名前空間
SqlClient のクラスの中で、Disposeがどのように対応しているのかを確認しました
| クラス | Dispose |
| SqlClientPermission | × |
| SqlClientPermissionAttribute | × |
| SqlCommand | ○ |
| SqlCommandBuilder | ○ |
| SqlConnection | ○ |
| SqlDataAdapter | ○ |
| SqlDataReader | ○ |
| SqlError | × |
| SqlErrorCollection | × |
| SqlException | × |
| SqlInfoMessageEventArgs | × |
| SqlParameter | × |
| SqlParameterCollection | × |
| SqlRowUpdatedEventArgs | × |
| SqlRowUpdatingEventArgs | × |
| SqlTransaction | ○ |
※ヘルプでは、SqlDataReader にDispose がありませんが、IDisposeインターフェースを実装していますので、Disposeすることができます。
利用時には、using を使って適切なタイミングで Dispose する必要があります。
例:
try
{
using (SqlConnection c = new SqlConnection("..."))
{
using (SqlCommand m = new SqlCommand())
{
...
}
}
}
catch (SqlException exp)
{
...
}
※using は、using (..., ...) と複数のならべて書くこともできます。