Имя и версия RDbms

Я делаю программное обеспечение на C ++, которое разрешает доступ к некоторым rdbms с библиотекой qt.
Программное обеспечение только для ПК.
Программное обеспечение должно знать имя rdbms и версию, потому что программе нужно выбрать какой-нибудь SQL-запрос для выполнения. Есть ли способ получить эти данные в любой rdbms?

0

Решение

Есть ли способ получить эти данные в любой rdbms?

Это специфично для каждой СУБД — например, в Oracle вы можете сделать

select *
from v$version;

но в других СУБД эта точка зрения не существует.

Некоторые возможные подходы:

  • В любом случае вам нужно где-то определить параметры подключения. Даже они часто специфичны для СУБД, поэтому вы можете просто добавить другой параметр, например SQLFlavor=Oracle или же SQLFlavor=MySQL а затем использовать значение SQLFlavor в вашем коде, чтобы определить, какой оператор SQL использовать

  • Вы можете использовать некоторые эвристические методы, чтобы найти РСУБД. Например, запросить v$version посмотреть — если он не существует, вы получите сообщение об ошибке, и вы знаете, что это не Oracle, и вы можете продолжить со следующей попытки (например, SELECT VERSION() чтобы увидеть, если это MySQL). В противном случае вы можете использовать результат, чтобы узнать конкретную версию Oracle.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]