我正在使用用于ODBC的Apache Ignite驱动程序来查询我的缓存(我的应用程序在C ++中被写入)。
作为实现它的一部分,我需要一种方法来知道连接是否仍处于打开状态以使用它。
我知道对于Windows API,解决方案就是使用此
SQLGetConnectAttr(dbc, SQL_COPT_SS_CONNECTION_DEAD,...)
但是AFAIK我不能使用ignite驱动程序API来调用它。
还有其他标准方法可以检查当前的特许状态吗?
答案 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一起检查连接。