AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO connection string zur laufzeit verändern
Thema durchsuchen
Ansicht
Themen-Optionen

ADO connection string zur laufzeit verändern

Ein Thema von Butterflyz · begonnen am 6. Jul 2004 · letzter Beitrag vom 19. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#1

ADO connection string zur laufzeit verändern

  Alt 6. Jul 2004, 18:13
ich hätte da mal eine frage: kann man die den ConnectionString einer ADO-Connection zur laufzeit verändern?
der string sieht ja in etwa so aus:

Code:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Dokumente und Einstellungen\username\Eigene Dateien\Fussball EM\data.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
und ich möchte den user die Datenbank zur laufzeit ändern und aussuchen lassen. die frage ist nur: der opendialog liefert mir ja nur den pfad - kann ich den dann einfach der ADO-Connection zuweisen?
und wo ich schon dabei bin: könnte man den pfad dann auch speichern? so dass die datenbank nicht immerwieder neu aufgerufen werden muss.

[edit=sakura] CODE Tags Mfg, sakura[/edit]
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Benutzerbild von Kevin
Kevin

Registriert seit: 11. Feb 2004
Ort: Bonn
576 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ADO connection string zur laufzeit verändern

  Alt 6. Jul 2004, 18:35
Dann ist dieses Tutorial das richtige für Dich: Flexible ADO-Connection
Kevin
  Mit Zitat antworten Zitat
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#3

Re: ADO connection string zur laufzeit verändern

  Alt 7. Jul 2004, 19:29
danke für den link, aber irgendwie klappt das alles nicht so recht... ich habe mir überlegt, dass es eigentlich auch reichen würde, wenn das programm vor jedem start guckt, ob sich die datenbank im rootverzeichnis befindet, aber jetzt kriege ich beim öffnen einen fehler von wegen zugriffsverletzung bei adresse bla bla bla....
hier die prozedur:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  if DataModule1.ADOConnection1.Connected = false then
  try
    DataModule1.ADOConnection1.ConnectionString := GetCurrentDir+'data.mdb';
    DataModule1.ADOConnection1.Open;
    showmessage(datamodule1.ADOConnection1.ConnectionString);
  except
    MessageDlg('Es befindet sich keine Datenbank im Programm-Verzeichnis!',
    mtError, [mbOK], 0);
    halt; //hier kommt der fehler
  end;
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Benutzerbild von Kevin
Kevin

Registriert seit: 11. Feb 2004
Ort: Bonn
576 Beiträge
 
Delphi 2006 Professional
 
#4

Re: ADO connection string zur laufzeit verändern

  Alt 7. Jul 2004, 22:48
Zitat von Butterflyz:
aber irgendwie klappt das alles nicht so recht...
Ich hab das Tutorial 1:1 übernommen und es funktioniert einwandfrei...

Allerdings macht mich Dein ConnectionString etwas stutzig. Denn nur mit der Übergabe eines Verzeichnisses und der *.mdb allein ist es noch lange nicht getan. Das muß ja in einen Fehler laufen. Du hast doch oben selber einen kompletten ConnectionString gepostet...
Kevin
  Mit Zitat antworten Zitat
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#5

Re: ADO connection string zur laufzeit verändern

  Alt 7. Jul 2004, 23:05
habe es auch 1:1 so übernommen wie es da steht, aber dann ging bei mir garnichts mehr. vielleicht sollte ichs nochmal versuchen... aber mich würde trotzdem intressieren wie meine variante denn jetzt funzt, habs ein bisschen umgeschrieben:

Delphi-Quellcode:
 DataModule1.ADOConnection1.ConnectionString
   := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+GetCurrentDir
      +'data.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";'
      +'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;'
      +'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'
      +'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'
      +'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'
      +'Jet OLEDB:Dont Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica'
      +'Repair=False;Jet OLEDB:SFP=False';
immer noch das gleiche...
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: ADO connection string zur laufzeit verändern

  Alt 8. Jul 2004, 08:08
Setzt deinen ConnectionString mal im DesignModus über diese DialogBox und kopier ihn dir hinterher aus dem OI.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#7

Re: ADO connection string zur laufzeit verändern

  Alt 8. Jul 2004, 20:49
so, hab jetzt echt alles versucht... hab mich letztendlich dann doch für kevins variante entschieden - allerdings kommt jetzt beim starten der anwednung immer ein fehler:
Im Projekt fussball_em.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004CDBAC in Modul 'fussball_em.exe'. Lesen von Adresse 00000058'. Prozess wurde angehalten. Mit Einzelen Anweisung oder Start fortsetzen.
hm... ich kann damit nicht so viel anfangen, aber hier kommen die fehler:

Delphi-Quellcode:
function TDataModule1.OpenDatabase: Boolean;
begin
  OpenDatabase := true; //hier der erste
  try
    ADOConnection1.Open;
  except
    OpenDatabase := false;
  end;
end;
Delphi-Quellcode:
function TDataModule1.EditFussballEM_DSN(var DSN: string): Boolean;
begin
  EditFussballEM_DSN := true;
  if ADOConnection1.Connected = true then //und hier der zweite
    if CloseDatabase = false then
    begin
      EditFussballEM_DSN := false;
      exit;
    end;
  if EditConnectionString(ADOConnection1) = true then
    DSN := ADOConnection1.ConnectionString
  else
    EditFussballEM_DSN := false;
end;
das prgramm läuft zwar normal weiter danach, aber wüsste trotzdem gerne was das soll? könnte es vielleicht was mit der datenbank zu tun haben und den zugriffsrechten oder so...?
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: ADO connection string zur laufzeit verändern

  Alt 9. Jul 2004, 11:08
Was machst du denn da? Einer Funktion einen Wert zuweisen??? Ähem, das wird folgendermaßen gemacht!
Delphi-Quellcode:
function TDataModule1.OpenDatabase: Boolean;
begin
  Result := true;
  try
    ADOConnection1.Open;
  except
    Result := false;
  end;
end;
Delphi-Quellcode:
function TDataModule1.EditFussballEM_DSN(var DSN: string): Boolean;
begin
  Result := true;
  if ADOConnection1.Connected then //und hier der zweite
    if not CloseDatabase then
    begin
      Result := false;
      Exit;
    end;
  if EditConnectionString(ADOConnection1) then
    DSN := ADOConnection1.ConnectionString
  else
    Result := false;
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Butterflyz

Registriert seit: 19. Mai 2004
19 Beiträge
 
#9

Re: ADO connection string zur laufzeit verändern

  Alt 10. Jul 2004, 12:08
Zitat von Stevie:
Was machst du denn da? Einer Funktion einen Wert zuweisen??? Ähem, das wird folgendermaßen gemacht!
naja, wenn mich nicht alles täuscht, kann man für die wertzuweisung sowohl den function-namen nehmen als auch result. dieser code ist 1:1 übernommen von der seite, die kevin gepostet hat. habs mit result versucht, immer noch der gleiche fehler...
danke trotzdem!
~stay on top or remain from the underground~
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: ADO connection string zur laufzeit verändern

  Alt 10. Jul 2004, 22:26
Hi Butterflyz,

was willst Du eigendlich? Eine ODBC-Verbindung oder ADO-Verbindug?
ADO`mäßig ist es ganz Einfach, Du nimmst eine ADO-Connetction Componente; Füllst den Verbindungsassisenten aus, d.w. . Anstelle des Pfades im ConnectionString kannst Du
auch jeden anderen gültigen String zu Deiner DB angeben.
Getreu:

Delphi-Quellcode:

"Provider:=..., C:\MeineDatenBanken\Test\User.mdb,..."
usw.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz