<p>If you need to open a SqlConnection before issuing queries, can you simply handle all non-Open ConnectionStates in the same way?  For example:</p>

<pre><code>    if (connection.State != ConnectionState.Open)
    {
        connection.Open();
    }
</code></pre>

<p>I read somewhere that for ConnectionState.Broken the connection needs to be closed before its re-opened.  Does anyone have experience with this?  Thanks-</p>

This isn't directly answering your question, but the best practice is to open and close a connection for every access to the database.  ADO.NET connection pooling ensures that this performs well.  It's particularly important to do this in server apps (e.g. ASP.NET), but I would do it even in a WinForms app that accesses the database directly.
Example:
```
```
using(SqlConnection connection = new SqlConnection(...))
{
   connection.Open();
   // ... do your stuff here

}  // Connection is disposed and closed here, even if an exception is thrown
```
```
In this way you never need to check the connection state when opening a connection.