Home » Tutorials » Datenbanken » Flexible ADO-Connection zur Ansteuerung einer Access-Datenbank
Flexible ADO-Connection zur Ansteuerung einer Access-Datenbank
Einstellungen speichern
Nun wäre es nett, den ConnectionString beim Beenden der Annwendung in die Registry zu schreiben, damit der User ihn nicht immer neu eingeben muss. Beim Programmstart soll der DSN dann natürlich ausgelesen werden – wenn möglich und vorhanden.
Dazu brauchen wir im Datenmodul drei Funktionen, hinter dem Schlüsselwort public. Vorher müssen wir aber noch unter uses im Datenmodul ADOConED einfügen. Dann geht’s an die Funktionen:
unit DatenmodulUnit; public function EditMeineAnwendungDSN(var DSN: string): Boolean; function GetMeineAnwendungDSN: string; function SetMeineAnwendungDSN(DSN: string): Boolean; ... function TDataModule2.EditMeineAnwendungDSN(var DSN: string): Boolean; begin EditMeineAnwendungDSN := true; if ADOConnection1.Connected then if not CloseDatabase then begin EditMeineAnwendungDSN := false; exit; end; if EditConnectionString(ADOConnection1) then DSN:=ADOConnection1.ConnectionString else EditMeineAnwendungDSN:=false; end; function TDataModule2.GetMeineAnwendungDSN: string; begin GetMeineAnwendungDSN:=ADOConnection1.ConnectionString; end; function TDataModule2.SetMeineAnwendungDSN(DSN: string): Boolean; begin SetMeineAnwendungDSN:=true; if ADOConnection1.Connected then if not CloseDatabase then begin SetMeineAnwendungDSN:=false; Exit; end; ADOConnection1.ConnectionString:=DSN; end;
Nun werden wir im Hauptformular auf die Funktionen zugreifen. Dazu allerdings zuerst die Unit Registry ganz oben unter uses im Hauptformular einbinden. Die DSN zur Datenbankverbindung wird mit folgendem Code in die Registry geschrieben und wieder ausgelesen:
unit MainUnit; ... private { Private declarations } function WriteDSNToRegistry(DSN: string): Boolean; function ReadDSNFromRegistry(var DSN: string): Boolean; ... function TForm1.WriteDSNToRegistry(DSN: String): Boolean; var Registry: TRegistry; begin WriteDSNToRegistry:=true; Registry:=TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; {Der Registry-Pfad für Ihren Eintrag} if not Registry.KeyExists('SoftwareMeinProgMeineAnw') then try Registry.CreateKey('SoftwareMeinProgMeineAnw'); except Registry.Free; WriteDSNToRegistry:=false; Exit; end; try if Registry.OpenKey('SoftwareMeinProgMeineAnw', true) then Registry.WriteString('DSN', DSN) else begin MessageDlg('Es konnte nicht in die Registry geschrieben '+ 'werden', mtError, [mbOK], 0); WriteDSNToRegistry:=false; end; finally Registry.CloseKey; Registry.Free; end; end; function TForm1.ReadDSNFromRegistry(var DSN: String): Boolean; var Registry: TRegistry; begin ReadDSNFromRegistry:=true; Registry:=TRegistry.Create; try Registry.RootKey:=HKEY_LOCAL_MACHINE; if Registry.KeyExists('SoftwareMeinProgMeineAnw') then begin if Registry.OpenKey('SoftwareMeinProgMeineAnw', true) then DSN:=Registry.ReadString('DSN') else ReadDSNFromRegistry:=false; end else ReadDSNFromRegistry:=false; finally Registry.Free; end; end;