So erstellen Sie die Datenbankverbindungszeichenfolge dynamisch

click fraud protection

Sobald Sie Ihre beendet haben Delphi-DatenbanklösungDer letzte Schritt besteht darin, den Computer des Benutzers erfolgreich bereitzustellen.

ConnectionString im laufenden Betrieb

Wenn Sie dbGo (ADO) -Komponenten verwendet haben, wird dieConnectionString Eigentum der TADOConnection Gibt die Verbindungsinformationen für den Datenspeicher an.

Beim Erstellen von Datenbankanwendungen, die auf verschiedenen Computern ausgeführt werden sollen, sollte die Verbindung zur Datenquelle in der ausführbaren Datei natürlich nicht fest codiert sein. Mit anderen Worten, die Datenbank kann sich irgendwo auf dem Computer des Benutzers (oder auf einem anderen) befinden Computer in einem Netzwerk) - Die im TADOConnection-Objekt verwendete Verbindungszeichenfolge muss unter erstellt werden Laufzeit. Einer der vorgeschlagenen Orte zum Speichern der Verbindungszeichenfolgenparameter ist der Windows-Registrierung (oder Sie entscheiden sich möglicherweise für die "Ebene" INI-Dateien).

Im Allgemeinen müssen Sie die Verbindungszeichenfolge zur Laufzeit erstellen

instagram viewer

a) Platzieren Sie den vollständigen Pfad zur Datenbank in der Registrierung. und
b) Lesen Sie bei jedem Start Ihrer Anwendung die Informationen aus der Registrierung, "erstellen" Sie den ConnectionString und "öffnen" Sie die ADOConnection.

Datenbank... Verbinden!

Um Ihnen das Verständnis des Prozesses zu erleichtern, haben wir eine Beispielanwendung "Skeleton" erstellt, die aus einem Formular (Hauptformular der Anwendung) und einem Datenmodul besteht. Die Datenmodule von Delphi bieten ein praktisches Organisationstool, mit dem Sie die Teile Ihrer Anwendung isolieren können, die die Datenbankkonnektivität und Geschäftsregeln verwalten.

Das OnCreate Im Ereignis des Datenmoduls platzieren Sie den Code, um den ConnectionString dynamisch zu erstellen und eine Verbindung zur Datenbank herzustellen.

Verfahren TDM.DataModuleCreate (Absender: TObject); Startwenn DBConnect dann
ShowMessage ('Mit Datenbank verbunden!')
sonst
ShowMessage ('NICHT mit Datenbank verbunden!'); Ende;

Hinweis: Der Name des Datenmoduls lautet "DM". Der Name der TADOConnection-Komponente lautet "AdoConn".

Das DBConnect Funktion erledigt die eigentliche Arbeit der Verbindung zur Datenbank, hier ist der Code:

function TDM.DBConnect: boolean; var
conStr: string; Servername, DB-Name: Zeichenfolge; StartServername: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Provider = sqloledb;' + 'Datenquelle =' + Servername + ';' + 'Initial Catalog =' + DBName + ';' + 'Benutzer-ID = myUser; Passwort = myPasword '; Ergebnis: = falsch; AdoConn. Schließen; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = False;wenn (NICHT AdoConn. In Verbindung gebracht) dannVersuchen
AdoConn. Öffnen; Ergebnis: = True; außerauf E: Ausnahme tunStartMessageDlg ('Beim Herstellen einer Verbindung ist ein Fehler aufgetreten. die Datenbank. Fehler: '+ # 13 # 10 + e. Nachricht, mtError, [mbOk], 0);wennNICHT TDatabasePromptForm. Ausführen (Servername, DBName)
dann
Ergebnis: = falsch. sonstStart
WriteRegistry ('DataSource', Servername); WriteRegistry ('DataCatalog', DBName); // diese Funktion aufrufen
Ergebnis: = DBConnect; Ende; Ende; Ende; Ende; //DBConnect

Die DBConnect-Funktion stellt eine Verbindung zur MS SQL Server-Datenbank her. Der ConnectionString wird mithilfe der lokalen Funktion erstellt connStr Variable.

Der Name des Datenbankservers wird im gespeichert Servername Variable, der Name der Datenbank wird in der gehalten DBName Variable. Die Funktion beginnt mit dem Lesen dieser beiden Werte aus der Registrierung (unter Verwendung der benutzerdefinierten Werte) ReadRegistry () Verfahren). Sobald der ConnectionString zusammengestellt ist, rufen wir einfach an AdoConn. Öffnen Methode. Wenn dieser Aufruf "true" zurückgibt, haben wir erfolgreich eine Verbindung zur Datenbank hergestellt.

Hinweis: Da wir Anmeldeinformationen explizit über den ConnectionString weitergeben, ist das Modul Da das Daten Vor dem Hauptformular erstellt, können Sie die Methoden sicher aus dem Datenmodul in OnCreate von MainForm aufrufen Veranstaltung.LoginPrompt Die Eigenschaft wird auf false gesetzt, um einen unnötigen Anmeldedialog zu vermeiden.

Der "Spaß" beginnt, wenn eine Ausnahme auftritt. Obwohl es viele Gründe für das Fehlschlagen der Open-Methode geben kann, nehmen wir an, dass der Servername oder der Datenbankname fehlerhaft ist.
In diesem Fall geben wir dem Benutzer die Möglichkeit, die richtigen Parameter anzugeben, indem ein benutzerdefiniertes Dialogfeld angezeigt wird.
Die Beispielanwendung enthält außerdem ein zusätzliches Formular (DatabasePromptForm), mit dem der Benutzer den Server und den Datenbanknamen für die Verbindungskomponente angeben kann. Dieses einfache Formular bietet nur zwei Bearbeitungsfelder. Wenn Sie eine benutzerfreundlichere Oberfläche bereitstellen möchten, können Sie dies tun Fügen Sie zwei ComboBoxen hinzu und füllen Sie diese, indem Sie die verfügbaren SQL Server auflisten und Datenbanken auf einem SQL Server abrufen.

Das DatabasePrompt-Formular bietet eine benutzerdefinierte Klassenmethode benannt Ausführen, das zwei variable (var) Parameter akzeptiert: Servername und DB-Name.

Mit den "neuen" Daten eines Benutzers (Server- und Datenbankname) rufen wir einfach die Funktion DBConnect () erneut auf (rekursiv). Natürlich werden die Informationen zuerst in der Registrierung gespeichert (mit einer anderen benutzerdefinierten Methode: WriteRegistry).

Stellen Sie sicher, dass DataModule das erste erstellte "Formular" ist!

Wenn Sie versuchen, dieses einfache Projekt selbst zu erstellen, treten beim Ausführen der Anwendung möglicherweise Ausnahmen bei Zugriffsverletzungen auf.
Standardmäßig ist das erste Formular, das der Anwendung hinzugefügt wird, das MainForm (das erste, das erstellt wurde). Wenn Sie der Anwendung ein Datenmodul hinzufügen, wird das Datenmodul der Liste der "automatisch erstellten Formulare" als das Formular hinzugefügt, das nach dem Hauptformular erstellt wird.
Wenn Sie jetzt versuchen, eine der Eigenschaften oder Methoden des Datenmoduls im OnCreate-Ereignis der MainForm aufzurufen, wird eine Ausnahme für Zugriffsverletzungen angezeigt, da das Datenmodul noch nicht erstellt wurde.
Um dieses Problem zu lösen, müssen Sie die erstellte Reihenfolge des Datenmoduls manuell ändern und festlegen Das erste Formular, das von der Anwendung erstellt wird (entweder über das Dialogfeld Projekteigenschaften oder durch Bearbeiten) das Projektquelldatei).

Da das Datenmodul vor dem Hauptformular erstellt wird, können Sie die Methoden aus dem Datenmodul im OnCreate-Ereignis der MainForm sicher aufrufen.

instagram story viewer