2

Does ExecuteScalar close the connection automatically?

Rookian
  • 19,841
  • 28
  • 110
  • 180

3 Answers3

6

No, you need to explicitly open and close the connection when using ExecuteScalar().

DCNYAM
  • 11,966
  • 8
  • 53
  • 70
5

You could create an overload using an extension method though I'm not sure if it's a good idea.

public static object ExecuteScalar(this IDbCommand Command, bool CloseConnetion)
{

    (if Command == null)
        throw new NullReferenceException();

    object obj = null;

    try
    {
      obj = Command.ExecuteScalar();        
    }
    finally
    {
      if(CloseConnection && Command.Connection.State != ConnectionState.Closed)
        Command.Connection.Close();    
    }

    return obj;
}
Rodrick Chapman
  • 5,437
  • 2
  • 31
  • 32
3

That depends.
One can write an implementation of IDbCommand that will close the connection.
But as far as I know the provided implementations does not close the connection.

Itay Karo
  • 17,924
  • 4
  • 40
  • 58