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.
:
Verschoben durch Moderator
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...
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?
Markus F. schrieb: > Eigentlich sollte ODBC genau das unnötig machen. Bei Datentypen vermutlich meistens ja. Aber bereits Banalitäten wie
1 | select top 10 * from Tabelle order by Zeit desc |
werden mitnichten von jeder SQL-Datenbank verstanden.
Rufus Τ. Firefly schrieb: > select top 10 * from Tabelle order by Zeit desc nun, genau die Banalität versteht außer MSSQL keiner...
Markus F. schrieb: > nun, genau die Banalität versteht außer MSSQL keiner... Limit versteht auch Oracle nicht. Jeder SQL-Server hat Erweiterungen, sobald man sie nutzt legt man sich fest.
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.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.