Ich programmiere hier und da freiberuflich und bin auf einen Auftrag gestoßen, bei dem Daten aus über 1.000 verschiedenen Datenbanken verglichen werden sollten. Ich war noch nie auf dieses Problem gestoßen und hatte wirklich keine Ahnung, wie ich das machen sollte. Ich hatte immer die GUI in Visual Studio verwendet, um eine Datenbankverbindung zu erstellen, aber das funktioniert nur für eine Handvoll Datenbanken. Wenn ich mich mit all diesen auf diese Weise verbinden würde, würde das Programm wirklich ins Stocken geraten und einen Quellcode erzeugen, der zu unhandlich wäre. Hinzu kam, dass ich nicht alle Datenbanken hatte. Dies war für die medizinische Forschung, also konnte ich die Datenbanken nicht bekommen, selbst wenn ich wollte, dass sie meine Festplatte durcheinander bringen. Da kam mir die Idee, Variablen zu verwenden. Wenn die Datenbanken ähnlich aufgebaut sind, können Sie mit einer Variablen und einer einfachen Textdatei auf beliebig viele Datenbanken mit C# zugreifen. Alle SELECT-Anweisungen, Befehlsobjekte und Adapter bleiben die gleichen wie in jedem anderen Programm. Der Unterschied liegt in der Verbindung. Ob Sie OLE oder SQL verwenden, die Verbindungen sind die gleichen. Hier ist der Code, den ich mir ausgedacht habe.

Zunächst müssen Sie eine kleine Textdatei erstellen, in der die Namen der Datenbanken gespeichert werden. Dazu müssen Sie eine Texteditor-Software und kein Textverarbeitungsprogramm verwenden. Textverarbeitungssoftware fügt unsichtbare Zeichen hinzu, die zur Formatierung verwendet werden. C# wird versuchen, diese Zeichen als Code zu lesen, und das wird Ihr ganzes Programm durcheinander bringen. Die Tatsache, dass es sich um unsichtbare Zeichen handelt, wird Sie tagelang mit der Fehlersuche beschäftigen, bevor Sie endlich herausfinden, was da los ist. Notepad eignet sich hervorragend für die Erstellung dieser Textdateien. Sie können mit Notepad sogar ein ganzes Programm erstellen (nicht empfohlen, aber möglich). Es gibt mehrere dieser Textschreibprogramme, und das Beste daran ist, dass die meisten von ihnen kostenlos sind. Wenn Sie Ihre Textdatei erstellen, muss es sich um eine Liste handeln. Jede Datenbank muss in eine eigene Zeile eingetragen werden, und Sie müssen die Dateierweiterung angeben. Die Dateierweiterung muss nicht angegeben werden, wenn es sich um den gleichen Dateityp handelt, aber es macht die Sache einfacher. Wenn Sie die Dateierweiterung nicht angeben möchten, können Sie sie später in der Verbindungsanweisung hinzufügen, solange alle Datenbanken den gleichen Dateityp haben. Hier ist ein Beispiel:

13020.mdb
A07719.mdb
A13525.mdb
A23139.mdb
A24893.mdb
A42214.mdb
57982.mdb
A06015.mdb
A06456.mdb
A20111.mdb
A23552.mdb

Wie man mit einem C#-Programm auf mehrere Datenbanken zugreift
Wie man mit einem C#-Programm auf mehrere Datenbanken zugreift

Sobald Sie die Textdatei eingerichtet haben, können Sie mit der Codierung beginnen. In meinem Programm musste ich alle Datenbanknamen in einem Listenfeld in der GUI anzeigen. Das bedeutet, dass sich mein Stream-Reader-Objekt im Abschnitt “Formular laden” befand. Sie können den Reader in jedem beliebigen Abschnitt platzieren, je nachdem, wo Sie ihn haben wollen. Das erste, was Sie tun müssen, ist, Ihr Stream-Reader-Objekt einzurichten. Wenn Sie die Dateinamen in einem Listenfeld anzeigen, benötigen Sie später einen weiteren Leser, wenn Sie die Daten verarbeiten möchten. Hier ist der Code dafür:

StreamReader NameRead = new StreamReader(“C:/Ihr Dateipfad/Dateiname.txt”);
string strNewName = NameRead.ReadLine();

Es ist wichtig, die Variable zu erstellen, die die zu lesende Zeile speichert. Dies ist der Schlüssel, damit dies funktioniert. Die Variable, die Sie zum Speichern des Dateinamens einrichten, wird entweder zum Hinzufügen der Datenbank zum Listenfeld oder zum Verarbeiten der Daten verwendet. Das einzige, was die Variable enthalten muss, ist der Dateiname. Wenn Sie auf Datenbanken an mehreren Orten zugreifen, muss sie auch den Dateipfad enthalten. Wenn der Pfadname ebenfalls in die Variable aufgenommen werden soll, müssen Sie ihn in die Textdatei aufnehmen. Am einfachsten ist es, alle Datenbanken im gleichen Ordner zu speichern. Dadurch wird die Menge der Daten, die Sie in Variablen speichern müssen, reduziert und das Auffinden und der Zugriff darauf erleichtert. Es wird auch die Menge der Variablen und des Codes, den Sie schreiben müssen, reduzieren. Wenn sich alle Datenbanken im gleichen Ordner befinden, finden Sie hier den Code zum Einrichten Ihrer Variablen:

string strFileName = strNextDB;
string strFileLocation = “C:/Ihr Dateipfad” + strFileName;

Sobald Sie die Variable eingerichtet haben, können Sie die Schleifenanweisung erstellen, um jede Datenbank in der Liste zu verarbeiten. Dies ist eine einfache Do While-Schleife, die die Variable verwendet, die Sie zum Speichern der Datenbanknamen eingerichtet haben. Im Grunde wird das Programm angewiesen, den Code immer wieder zu verarbeiten, solange ein Wert in der Variablen vorhanden ist. Sobald der Stream-Reader das Ende der Datei erreicht hat, wird die Variable geleert und die Schleife wird beendet. Die Schleifenanweisung ist sehr einfach einzurichten und muss jeden Code aufnehmen, den Sie mit allen Datenbanken durchführen möchten. Hier ist die Schleifenanweisung:

while (strNewName != null)
{
Ihr Code kommt hier hin.
}

Um in Ihrem Code auf die verschiedenen Datenbanken zuzugreifen, richten Sie Ihre Verbindungszeichenfolge ein. Nachdem Sie Ihre Variablen deklariert und den Start Ihres Codes eingerichtet haben, wollen Sie Ihren Verbindungsbefehl starten. Die Verbindungszeichenfolge ist das, was Sie von dem normalen Code, den Sie verwenden würden, ändern werden. In der Verbindungszeichenfolge müssen Sie die normalen Datenbankverbindungsinformationen, den Dateipfad und die Dateinamensvariable angeben. Wenn Sie eine Datenbankverbindung erstellen, müssen Sie wissen, auf welche Art von Datenbank Sie zugreifen. In diesem Beispiel wird eine Access-Datenbank verwendet, es handelt sich also um ein OLE-Objekt. Sie müssen ein SQL-Objekt für den Zugriff auf Ihre Datenbank einrichten. Hier ist der Code zum Starten der Verbindung:

string strConnection = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=” + strFileLocation;
OleDbConnection myOLEConnection = new OleDbConnection(strConnection);

Der Rest der Datenbankinformationen wird normal eingerichtet. Sie können alle Ihre SELECT-Anweisungen, Adapter und Datasets so einrichten, wie sie normalerweise eingerichtet werden würden. Dies sind die einzigen notwendigen Änderungen, die vorgenommen werden müssen, damit Ihr Programm auf unbegrenzte Datenbanken zugreifen kann. Es gibt noch andere Möglichkeiten, dies zu tun, aber dies ist diejenige, die mir eingefallen ist. Sie ist einfach und leicht zu verstehen und kann für jede Art von Datenbank verwendet werden. Die Sache mit der Programmierung ist die, dass es mehrere verschiedene Wege gibt, um die gleiche Aufgabe zu erledigen. Dies ist nur ein Weg, den ich mir einfallen lassen musste, da es sehr schwierig ist, irgendwelche Codeschnipsel für mehrere Datenbanken zu finden. Ich hoffe, dies hilft Ihnen bei Ihrem Programm.