Entwickler-Ecke

Datenbanken - ODBC-Treiber auslesen


majolo - Fr 24.01.03 14:27
Titel: ODBC-Treiber auslesen
Hi Leute,

wie kann ich alle auf dem Computer installierten ODBC Treiber auslesen und in eine ListBox oder ComboBox hinzufügen. das Verfahren ist ja eh gleich. Habe leider in der Hilfe nichts gefunden. Wundert mich eigentlich,dass dieses noch niemanden interessiert hat.
Danke.
Gruss
majolo


smiegel - Fr 24.01.03 14:33

Hallo,

Zitat:

dass dieses noch niemanden interessiert hat


warum auch? Den Treiber, den ich benötige kenne ich. Ich weiss auch nicht was mir das bringen soll, weil, mit einem Access-ODBC kann ich nicht auf eine DB2-Datenbank zugreifen.


neojones - Fr 24.01.03 14:47

@smiegel:

Tja, aber man könnte so was ja eventuell für ein Datenbank-Admin-Tool brauchen ... Nur weil Du es noch nie gebraucht hast, heißt das ja noch nicht, dass es keinen interessiert. Ich selbst hatte im alten Delphi-Forum dieselbe Frage gestellt...

@majolo:

Die ODBC-Sockets stehen alle in der Registry. Ich weiß nur nicht genau, wo, aber irgendwo unter HKEY_LOCAL_MACHINE. Such am Besten einfach mal im regedit nach einem Socket-Namen.

Viele Grüße,

Matthias


majolo - Fr 24.01.03 20:12

@NeoJones: Vielen Dank, da werde ich mal suchen.
@smiegel: Ich kenne den Treiber auch. Jedoch soll der User den TREIBER für seine DB aussuchen können. :wink:
Naja, vielleicht weiß einer den Registryeintrag oder noch eine andere lösung.

Gruss
majolo


majolo - Fr 24.01.03 23:16

Habe meine Registry von oben bis unten durchforstet.kann leider den Eintrag nicht finden. Weiß einer die Registrydatei und gibt es noch eine andere Lösung??

Gruss
majolo


Simon Joker - Mo 27.01.03 12:10

Schau hier:

-installierte Treiber
HLM/Software/ODBC/ODBCINST.INI/ODBCDRIVER

-Treibereinstellungen
HLM/Software/ODBC/ODBCINST.INI/<Treibername>

-Eingerichtete Verbindungen
HLM/Software/ODBC/ODBC.INI/<Verbindungsname>


GuGl - Mo 27.01.03 15:04

Hi, ich habe das mal gebraucht:



Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
procedure TForm1.GetDataSourceNames(System: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    if System then
      reg.RootKey := HKEY_LOCAL_MACHINE
    else
      reg.RootKey := HKEY_CURRENT_USER;

    if reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', False) then
    begin
      if system then reg.GetValueNames(liste1)
      else reg.GetValueNames(liste2);
    end;

  finally
    reg.CloseKey;
    FreeAndNil(reg);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i : integer;
begin
  liste1 := TStringlist.create;
  liste1.clear;
  liste2 := TStringlist.create;
  liste2.clear;
  //System DSNs in liste1
  ListBox1.Items.Clear;
  ListBox1.Items.Add('SYSTEM DSN :');
  ListBox1.Items.Add(' ');
  GetDataSourceNames(true);
  for i := 0 to liste1.count - 1 do listbox1.items.Add(liste1[i]);
  //User DSNs in liste2
  ListBox1.Items.Add(' ');
  ListBox1.Items.Add('USER DSN :');
  ListBox1.Items.Add(' ');
  GetDataSourceNames(false);
  for i := 0 to liste2.count - 1 do listbox1.items.Add(liste2[i]);
  liste1.free;
  liste2.free;
end;


Hoffe das hilft weiter


majolo - Mo 27.01.03 20:03

danke, das sieht schon präziser aus. Werde es gleich mal ausprobieren.
Gruss
majolo