Это не дает прямого ответа на ваш вопрос, но рекомендуется открывать и закрывать соединение для каждого доступа к базе данных. ADO.NET пул соединений гарантирует, что это работает хорошо. Это особенно важно делать в серверных приложениях (например, ASP.NET), но я бы сделал это даже в приложении WinForms, которое напрямую обращается к базе данных.
Пример:
using(SqlConnection connection = new SqlConnection(...))
{
connection.Open();
// ... do your stuff here
} // Connection is disposed and closed here, even if an exception is thrown
Таким образом, вам не нужно проверять состояние соединения при открытии соединения.