SQL-Befehl für Datenbankservertyp;

Gast #3798756
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
Wenn ich mich über das MySQL Protokoll mit einem DB-Server verbinde, 
kann ich davon ausgehen dass es sich um einen MySQL Server handelt. 
Gleiches gilt für MSSQL etc...
Gast
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.
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?
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.