显然(MSDN)有时候OleDbConnection.ResetState()什么都不做,所以即使连接失败,OleDbConnection.State仍然会被设置为Open.我正在寻找最好的解决方法,以便当我检查连接状态时,我可以避免引发异常(只要连接在上次检查和使用尝试之间没有失败).
没有什么比每次发送"无用的"sql语句只是为了查看是否抛出异常更好的了吗?在实际使用之前,如何确保连接已打开?
在你的情况下,我会做以下事情:
在使用它之前,不要确定连接是否"真正"打开:无论如何它将是大部分时间,并且你将节省大量无用的往返服务器
但每次使用连接时都要检查是否有异常(创建辅助方法以避免复制/粘贴)
如果您有异常,则发送"无用"语句以检查数据库连接"真实"状态.我会这样做,因为当与服务器的连接丢失时可以获得的异常类型有时会非常令人惊讶(取决于连接断开时发生的情况)
希望这可以帮助.