![]() |
ODBC Schnittstellen und Datenbanken-Namen auslesen???
Ich möchte einen Server z.B. MS-SQL Server 7/2000 auslesen und erfahren was für Datenbanken(mit welchen Tabellen) sich drauf befinden.
Aber auch interessiert ist, wie ich ODBC-Schnittstellen von System auslesen kann und neue definieren. Ich habe W2k, WinXP Pro., Linux (Suse/RedHat), Delphi 5/6/7 zu Verfügung. Dank im voraus !!!!! |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Dazu brauchst du erst mal eine ODBC-Api. Und in der gibts den Befehl
SQLDataSources Weil ich nicht so bin ...
Delphi-Quellcode:
Achtung damit es nicht sinnlos kopiert habe ich absichtlich einige Funktionen nicht mit kopiert.
procedure TSQLEnviroment.EnumDataSources(afTyp: TDSNTypes; apEnumProc : TDSNEnumProc; apData : Pointer);
const ciFirstFetch : array [TDSNTypes] of SQLUSMALLINT = (SQL_FETCH_FIRST, SQL_FETCH_FIRST_SYSTEM, SQL_FETCH_FIRST_USER); var cDSN : array [0..SQL_MAX_DSN_LENGTH] of Char; cDriver : array [0..1023] of Char; iLenDSN, iLenDriver : SQLSMALLINT; begin if SQLCheck(SQLDataSources(hHandle, ciFirstFetch[afTyp], @cDSN, SQL_MAX_DSN_LENGTH + 1, iLenDSN, @cDriver, 1024, iLenDriver)) <> SQL_NO_DATA then repeat apEnumProc(cDSN, cDriver, apData); // übergebe until SQLCheck(SQLDataSources(hHandle, SQL_FETCH_NEXT, @cDSN, SQL_MAX_DSN_LENGTH + 1, iLenDSN, @cDriver, 1024, iLenDriver)) = SQL_NO_DATA; end; Die ganzen Klassen haben mir viel Zeit gekostet. |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Ich will mich gleich bedanken für die rasche antwort bedanken !!!
Jedoch kann ich dienen Quelltext nicht so nachvollziehen?! Danke Dir :? |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Delphi-Quellcode:
Sag was genau jetzt noch unklar ist...
// Dieses Procedure ist gehört zu einem Enviroment-Object
procedure TSQLEnviroment.EnumDataSources(afTyp: TDSNTypes; apEnumProc : TDSNEnumProc; apData : Pointer); // afTyp: gibt an welche DSN's man sehen will // apEnumProc: ist eine CallBack-Funktion // apData: Platzhalter für Parameter an die CallBack const ciFirstFetch : array [TDSNTypes] of SQLUSMALLINT = (SQL_FETCH_FIRST, // System und User SQL_FETCH_FIRST_SYSTEM, SQL_FETCH_FIRST_USER); var cDSN : array [0..SQL_MAX_DSN_LENGTH] of Char; cDriver : array [0..1023] of Char; iLenDSN, iLenDriver : SQLSMALLINT; begin // SQLCheck prüft auf Fehler, hab ich selbst geschrieben // function SQLCheck(hr : SQLRESULT) : SQLRESULT; // gibt Exception mit ODBC-Error zurück falls ein Fehler auftrat // SQLDataSources ist eine ODBC-Funktion if SQLCheck(SQLDataSources(hHandle, ciFirstFetch[afTyp], @cDSN, SQL_MAX_DSN_LENGTH + 1, iLenDSN, @cDriver, 1024, iLenDriver)) <> SQL_NO_DATA then // erster Eintrag repeat apEnumProc(cDSN, cDriver, apData); // übergebe an Callback until SQLCheck(SQLDataSources(hHandle, SQL_FETCH_NEXT, @cDSN, SQL_MAX_DSN_LENGTH + 1, iLenDSN, @cDriver, 1024, iLenDriver)) = SQL_NO_DATA; // alle weiteren end; |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Hallo !
Ich bräuchte den gesamten Pfad zur mdb (Access). Bekomm' ich den über die Funktion SQLDataSources ?? Oder besser über die Registry ?? In welcher DLL Ist denn überhaupt die Funktion ?? Danke im Voraus !!! |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Greif doch einfach auf die ADO schnittstellen zu. Von dort aus kannst du mit ConnectionStrings einfach eine Verbindung über eine ODBC / OLEDB zu einer Datenbank herstellen.
PS: MSSQL:
SQL-Code:
MySQL:
SELECT * FROM master.dbo.Sysdatabases // Datenbanken
SELECT * FROM master.dbo.SysObjects WHERE xtype = 'U' // Tabellen
SQL-Code:
Für die anderen,
SHOW Databases // Datenbanken
SHOW Tables // Tabellen ![]() |
Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???
Ich möchte aber gerne die Datenbank überprüfen ob die ODBC richtig ist. Manchmal wenn der Server ausfällt wird der Pfad von einer Application automatisch auf einen Standard zurückgestellt. Der stimmt dann aber nicht.
Ich kann also die Datenbank garnicht mehr öffnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz