AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ODBC Schnittstellen und Datenbanken-Namen auslesen???
Thema durchsuchen
Ansicht
Themen-Optionen

ODBC Schnittstellen und Datenbanken-Namen auslesen???

Ein Thema von Nexio · begonnen am 11. Sep 2003 · letzter Beitrag vom 18. Jan 2005
Antwort Antwort
Nexio

Registriert seit: 24. Mär 2003
Ort: Mainz
13 Beiträge
 
Delphi 5 Enterprise
 
#1

ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 11. Sep 2003, 01:18
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 !!!!!
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 11. Sep 2003, 07:19
Dazu brauchst du erst mal eine ODBC-Api. Und in der gibts den Befehl

SQLDataSources

Weil ich nicht so bin ...
Delphi-Quellcode:
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;
Achtung damit es nicht sinnlos kopiert habe ich absichtlich einige Funktionen nicht mit kopiert.

Die ganzen Klassen haben mir viel Zeit gekostet.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Nexio

Registriert seit: 24. Mär 2003
Ort: Mainz
13 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 11. Sep 2003, 07:51
Ich will mich gleich bedanken für die rasche antwort bedanken !!!
Jedoch kann ich dienen Quelltext nicht so nachvollziehen?!

Danke Dir
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 11. Sep 2003, 08:20
Delphi-Quellcode:
// 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;
Sag was genau jetzt noch unklar ist...
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
inetdancer

Registriert seit: 18. Jan 2005
2 Beiträge
 
Delphi 7 Professional
 
#5

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 18. Jan 2005, 12:56
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 !!!
  Mit Zitat antworten Zitat
clues1

Registriert seit: 11. Feb 2004
97 Beiträge
 
#6

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 18. Jan 2005, 13:36
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:
  SELECT * FROM master.dbo.Sysdatabases // Datenbanken
  SELECT * FROM master.dbo.SysObjects WHERE xtype = 'U'  // Tabellen
MySQL:
SQL-Code:
SHOW Databases // Datenbanken
SHOW Tables // Tabellen
Für die anderen, www.google.de
  Mit Zitat antworten Zitat
inetdancer

Registriert seit: 18. Jan 2005
2 Beiträge
 
Delphi 7 Professional
 
#7

Re: ODBC Schnittstellen und Datenbanken-Namen auslesen???

  Alt 18. Jan 2005, 13:43
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz