Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Passwortgeschützte Access Datenbank erzeugen (https://www.delphipraxis.net/116953-passwortgeschuetzte-access-datenbank-erzeugen.html)

Tyrael Y. 9. Jul 2008 09:28

Datenbank: Access • Zugriff über: ADO

Passwortgeschützte Access Datenbank erzeugen
 
Hallo zusammen,

ich benutze bisher folgenden Code, um eine Access-Datenbank anzulegen.

Delphi-Quellcode:
const  
  C_CONNECTION_STRING = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
  ....
  //Datenbank erzeugen
  if not SameText(LPath, '') then
  begin
    try
      LCatalog := CreateOleObject('ADOX.Catalog');
      LConnectionString := Format(C_CONNECTION_STRING, [LPath]);
      LCatalog.Create(LConnectionString);
      LCatalog := Unassigned;
      result := FileExists(LPath);
    except
      on e: Exception do
      begin
        MessageDlg(LoadResString(@SCannotCreateDatabase), mtError, [mbOK], 0);
        Result := false;
        Exit;
      end;
    end;
  end;
....
Dies funktioniert auch gut.

Jetzt wollte ich die erzeugte Datenbank mit einem Passwort versehen, damit man diese
Datenbank nicht in Access öffnen kann.

Wenn ich den Connectionstring folgendermassen ändere

Delphi-Quellcode:
const  
  C_CONNECTION_STRING = 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                        'Jet OLEDB:Database Password="%s";' +
                        'Data Source=%s;' +
                        'Persist Security Info=True';

  C_PASSWORD = '1234567890'

...
  LCatalog := CreateOleObject('ADOX.Catalog');
  LConnectionString := Format(C_CONNECTION_STRING, [C_PASSWORD, LPath]);
  LCatalog.Create(LConnectionString);
...
bekomme ich dei Fehlermeldung

"Fehler bei einem aus mehreren Schritten bestehenden OLE DB-Vorgang. Prüfen Sie die einzelnen OLE DB-Statuswerte, falls vorhanden. Daten wurden nicht verarbeitet"

Was mach ich falsch?
Der Connectionstring sieht eigentlich richtig aus.
Hängt es vielleicht damit zusammen, das ich die Datenbank über ein COM-Objekt erzeugen lasse?

Tyrael Y. 9. Jul 2008 13:18

Re: Passwortgeschützte Access Datenbank erzeugen
 
Der Code ist völlig ok.

Mein Passwort war zu sicher -.-

Ich hatte nicht wie hier im Beispiel ein einfaches Passwort, sondern
ein sehr kryptisches und langes Passwort.
Mit einem "einfacherem" Passwort funktioniert das Ganze.

Delphi-Quellcode:
const  
  C_CONNECTION_STRING = 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                        'Jet OLEDB:Database Password="%s";' +
                        'Data Source=%s' //+
                        //'Persist Security Info=True';

  C_PASSWORD = '1234567890'

...
  LCatalog := CreateOleObject('ADOX.Catalog');
  LConnectionString := Format(C_CONNECTION_STRING, [C_PASSWORD, LPath]);
  LCatalog.Create(LConnectionString);


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz