检查连接状态-Ignite的C ++ odbc驱动程序

时间:2018-10-14 09:56:36

标签: c++ odbc ignite

我正在使用用于ODBC的Apache Ignite驱动程序来查询我的缓存(我的应用程序在C ++中被写入)。

作为实现它的一部分,我需要一种方法来知道连接是否仍处于打开状态以使用它。

我知道对于Windows API,解决方案就是使用此

SQLGetConnectAttr(dbc, SQL_COPT_SS_CONNECTION_DEAD,...)

但是AFAIK我不能使用ignite驱动程序API来调用它。

还有其他标准方法可以检查当前的特许状态吗?

3 个答案:

答案 0 :(得分:1)

实际上,SQL_ATTR_CONNECTION_DEAD受Ignite支持并且可以正常工作。这是actual page。但是请确保这是您想要的,因为SQL_ATTR_CONNECTION_DEAD检查连接的最新状态,并且可能不是当前的连接状态。

另外,请注意,由于2.5 Ignite的ODBC驱动程序支持failover mechanism并在当前服务器节点关闭后尝试自动恢复连接。

答案 1 :(得分:0)

我相信使用ODBC是不可能的。不支持大多数属性 https://apacheignite.readme.io/v2.1/docs/conformance

您应该改用ignite C ++。如果您已经构建了项目,则可能需要进行大量重构 https://apacheignite-cpp.readme.io/docs/getting-started

祝你好运

答案 2 :(得分:0)

我认为您可以进行下一个或类似的简单检查:

    SQLCHAR req[] = "SELECT 1";

    SQLRETURN ret = SQLExecDirect(stmt, req, SQL_NTS);

    if (!SQL_SUCCEEDED(ret))
        //conection failed

它应该与Ignite一起检查连接。