C# - Datenbank Auflistung

SeeSharpNewBee

Erfahrenes Mitglied
Hi,

ich suche nach einer Möglichkeit, alle installierten Datenbanken aufzulisten. Es soll nämlich bei meinem Programm möglich sein, zb. auszuwählen in einer Combobox, ob ma sich mit einer MySQLDB oder mit einer MSSQL oder oder oder verbinden möchte. Gibts da eine möglichkeit? Wenn ja, bitte um irgendwelche Informationen/Codeschnippsel/oder dgl. Danke!
 
Meinst du Datenbank Management System (MS SQL, MySQL, Oracle ...) oder meinst du direkt die tatsächlichen Datenbanken nach Auswahl des DBMS? Wenn zweiteres, dann musst du eine Verbindung zur Datenbank herstellen und dann die einzelnen Datenbanken auslesen. Hierfür gibts in jeder DBMS entsprechende Möglichkeiten.
 
Hi,

nein eher das erstere, ich möchte das wenn zb. MySql und MSSql und Oracle installiert sind, in einer zb. ComboBox auswählen zu welcher man sich verbinden möchte, bzw. das Programm dynamisch zu gestalten, das wenn ich zb. jetzt MySQL 4.1 verwende, aber in ein paar monaten dann die Version 5.0 oder 5.1 installiere, das man einfach per Auswahl umsteigen kann.

Ich hab mir schon gedanken gemacht, und bin zu der Lösung gekomen, das ich die Registry durchforste um zu erfahren welche SQL Server installiert sind, nur bin ich mir nicht sicher, da ich ja das komplette Netzwerk durchsuchen möchte.

Gibt es eine einfachere Möglichkeit, oder muss ich wirklich mit der Registry arbeiten? Danke!
 
Die Registry nützt dir gar nichts, wenn der Server zu dem man sich verbinden möchte nicht auf der eigenen Maschine installiert ist, sondern im lokalen LAN installiert ist, oder noch viel schlimmer irgendwo im Internet zu finden ist.

Du kannst zwar die DMBS im eigenen Netzwerk ausfindig machen. Beim SQL Server müsstest du dafür den Port 1434 verwenden (bin mir jetzt aber nicht ganz sicher). Wie dies bei anderen DBMS aussieht, kann ich nicht sagen.
 
Bei Oracle könntest du danach suchen, ob der Oralce Client installiert ist. Dabei kommt es aber darauf an, wie du die verbindung zum DBMS herstellen willst. Bei OleDB reicht es, wenn du nur nach dem Client suchst (jedenfalls bei Oracle 10g, bei anderen weiß ich jetzt nicht mehr, ob der OleDB Treiber standardmäßig mitinstalliert wird). Wenn du die .NET-Komponenten von Oracle nutzen willst, musst du noch nach denen suchen.
 
Danke für die Antworten, aber warum ist es ein Problem in der Registry eines Rechners im eigenen Netzwerk zu lesen?

Und hätte jemand einen Anhaltspunkt, bzw. irgendetwas wo ich das über DBMS nachlesen kann? Oder gar einen Source-Schnippsel? Danke!
 
Du kannst schon remote auf die Registry von anderen Rechnern zugreifen. Musst halt die jeweiligen Admin-Passwörter haben, oder den User+Passwort des Domänen-Administrators, sofern es eine Domäne gibt. Sonst wird das eher schwierig.

Meist ist jedes DBMS via IP/Port erreichbar und auch so zu erkennen. Du musst dich halt mit den jeweiligen DMBS auseinandersetzen und Informationen zu jedem DBMS suchen, wie man feststellen kann, ob dieser Dienst am jeweiligen Rechner läuft. Bezüglich Microsoft SQL Server hab ich dir bereits einen Tipp gegeben. Ähnlich geht es auch bei MySQL, Oracle und Co. Musst halt ein wenig Recherchieren.
 
Ok, ich glaube zu verstehen was du meinst. Meinst du damit etwa das man bei der Installation von MySQL zb. den Netzwerkport angenben kann - 3306? Wenn ja, wie kann ich feststellen welche Version von zb. MySQL das ist? Danke!
 
Jeder (ausser es ist deaktiviert) Datenbank-Server lauscht auf einem Port und darüber kann das in den meisten Fällen auch festgestellt werden ob auf dem entsprechenden Rechner ein Datenbank-Server läuft. WIE du das machst, das musst du nachforschen. Ist von DBMS zu DBMS verschieden. Halt mal ein wenig im Google schmöckern.
 
Das Problem dabei aber ist, dass die Ports konfigurierbar sind. Soll heißen, du kannst dich nicht auf die Standardports verlassen.
 
Zurück