SQL-Befehl für Datenbankservertyp;

Gast #3798756
Lesenswert?

Hallo,

zugegeben etwas OT, aber bei dem hier versammelten Sachverstand 
vielleicht trotzdem zu beantworten :

Gibt es einen SQL-Befehl, mit dem man den Typ einer Datenbankserver 
abfragen kann (also z.B. ob MSSQL, MySQL, Oracle etc.)
Soll in einem GNU-CPP-Programm unter Windows 64 Bit ausgeführt werden.

Danke, s.
Gast #3798770
Lesenswert?

Die Verbindung erfolgt über ODBC-Verbindungen zu zwei unterschiedlichen 
Datenbankservern, die (bisher) sowohl MSSQL als auch MySQL-Server sein 
können, und zwischen denen Daten gespiegelt werden sollen.

Da die unterschiedlichen Datenbankserver verschiedene Bezeichungen für 
die gleichen Datentypen verwenden (z.B. int / integer) müssen bei den 
Fallunterscheidungen für die notwendigen Überprüfungen die Typen der 
Datenbankserver bekannt sein.
#3798817
Lesenswert?

interrupt schrieb:
> Da die unterschiedlichen Datenbankserver verschiedene Bezeichungen für
> die gleichen Datentypen verwenden (z.B. int / integer) müssen bei den
> Fallunterscheidungen für die notwendigen Überprüfungen die Typen der
> Datenbankserver bekannt sein.

Eigentlich sollte ODBC genau das unnötig machen.

Falls man's trotzdem unbedingt machen will (oder muß), dann lieber per 
entsprechendem ODBC-Aufruf die Datenquelle abfragen statt per SQL:
1
SQLGetInfo(dbc, SQL_DBMS_NAME, (SQLPOINTER)dbms_name,
2
         sizeof(dbms_name), NULL);
3
SQLGetInfo(dbc, SQL_DBMS_VER, (SQLPOINTER)dbms_ver,
4
         sizeof(dbms_ver), NULL);

Den Datentyp INT sollten meiner blassen Erinnerung nach aber beide 
Datenbanksysteme kennen und exakt identisch implementieren?
#3799874
Lesenswert?

Für sowas sollte man FETCH FIRST nehmen, was soweit ich weis, Standard 
SQL ist. Wenn das manche DBs nicht kennen - Pech.

>Eigentlich sollte ODBC genau das unnötig machen.

Genau ...
Andererseits hat ODBC aber auch viele interessante Funktionen, um eben 
solche Unterschiede zw. den Plattformen abzufragen (z.B. 
SQLGetTypeInfo), damit die Applikation (sofern intelligent genug) sich 
anpassen kann.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren