Dispose
also closes the connection if it hasn't been closed, but when calling Close
, you can reopen the connection again. This is not possible when the connection is disposed.
In general, don't call Close
, but simply call dispose implicitly by wrapping the creation of a connection in a using
block:
using (var connection = new SqlConnection(...))
{
// use connection here. e.g.:
connection.Open();
using (var command = connection.CreateCommand())
{
...
}
} // connection gets closed and disposed here.