Проверьте состояние соединения - драйвер C ++ odbc для Ignite - PullRequest
0 голосов
/ 14 октября 2018

Я использую драйвер Apache Ignite для ODBC для запроса моего кэша (мое приложение написано на C ++).

В рамках его реализации мне нужен способ узнать, открыто ли еще соединение вчтобы использовать его.

Я знаю, что для Windows API решение состоит в том, чтобы использовать это

SQLGetConnectAttr(dbc, SQL_COPT_SS_CONNECTION_DEAD,...)

Но AFAIK Я не могу вызвать его с помощью API-интерфейса драйвера зажигания.

Есть ли какой-нибудь другой стандартный способ проверить текущее состояние соединения?

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Я думаю, что вы можете сделать простую проверку, как следующую или похожую:

    SQLCHAR req[] = "SELECT 1";

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

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

Должно работать с Ignite для проверки соединения.

0 голосов
/ 15 октября 2018

На самом деле, SQL_ATTR_CONNECTION_DEAD поддерживается Ignite и должно работать.Вот фактическая страница .Но убедитесь, что это именно то, что вам нужно, потому что SQL_ATTR_CONNECTION_DEAD проверяет самое последнее состояние соединения, а может и не быть текущим состоянием соединения.

Также обратите внимание, что, поскольку 2.5 драйвер ODBC Ignite поддерживает механизм восстановления после отказа и пытается автоматически восстановить соединение, когда текущий серверный узел не работает.

0 голосов
/ 14 октября 2018

Я считаю, что это было бы невозможно с ODBC.Большинство атрибутов не поддерживаются https://apacheignite.readme.io/v2.1/docs/conformance

Вместо этого следует использовать ignite C ++.Если вы уже создали свой проект, то у вас может быть много рефакторинга https://apacheignite -cpp.readme.io / docs / Getting-Start

Удачи

...