c++ - 在 ADO 中检查 SQL 连接状态

标签 c++ sql sql-server ado

我正在检查我的 SQL 连接状态:

_ConnectionPtr          m_pADOConnection; 

// Connection is created and working fine...

// Now I disable network adapter (from Control panel)

if( (pApp->m_pConnection->GetState() == adStateOpen)  )
{
    // I got here every time....
}

问题是我每次都得到 adStateOpen 即使连接真的不起作用!

如果我尝试执行查询或做任何失败的事情,主要是

SMux Provider: Physical connection is not usable [xFFFFFFFF].

Error number: 80004005 = Unable to open a logical session

State 属性的这个值是否可靠,或者我需要执行一些其他检查以检测此状态?

最佳答案

当连接中断时,state 属性不会变为 0 (adStateClosed)。所以检查连接状态总是会返回1(adStateOpen),即使在连接中断之后也是如此。

不,没有办法立即检查。 SQL 服务器的体系结构不允许这样做。

我建议您创建一个错误处理程序。

看起来好像建立连接已丢失的唯一方法是尝试打开它并处理错误。

关于c++ - 在 ADO 中检查 SQL 连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303088/

相关文章:

sql-server - 我该如何通过2个连接来进行 "FOR JSON"

c++ - 有没有办法只评估仿函数的参数?

php - 在 PHP 中进行 24 个数据库查询或 1 个数据库查询和排序是否更快?

c++ - 为什么我的 OpenGL 不绘制任何东西?

mysql - 数据库设计: Storing previous version versus storing first version in version control systems

sql - 如何从SQLite数据库获取最后一个表

c# - 在哪里可以找到有关为 SQL Server Management Studio 创建插件的信息?

Java SQL Server 2012 无法打开数据库错误

c++ - 当光标到达wxTextCtrl时如何在wxWidgets中创建一个事件

c++ - QHBoxLayout 中 QPushButton 周围的 Qt 空间