AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADOConnection wieder öffnen und ConnectionString neu zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

ADOConnection wieder öffnen und ConnectionString neu zuweisen

Ein Thema von Jumpy · begonnen am 28. Okt 2013 · letzter Beitrag vom 28. Okt 2013
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#1

ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 10:24
Datenbank: Oracle • Version: 11g • Zugriff über: ADO
Hallo,

hab ein internes Programm das mit ADOConnection auf eine DB-Zugreift. Das ist beliebter als ursprünglich gedacht und geplant und läuft bei vielen Kollegen den ganzen Tag. Es hält dabei aber ständig die Verbindung zur Datenbank offen, was mittleweile lästig wird und eigentl. nicht nötig ist.

Also wird die ADOConnection jetzt nach dem Start geschlossen und nur bei Bedarf wieder geöffnet.
Dazu muss ich aber jedesmal der Connection den ConnectionString neu zuweisen. Mach ich das nicht, so kommt bei einem Connection.Open die Fehlermeldung von der Datenbank, dass Benutzername und Passwort falsch sind. Ich hab dann gesehen, das in der ADO-Komponente am Ende der Open-Prozedur die internen Felder für Benutzer und Passwort "geleert" werden (:='') und ich hab mich gefragt, warum ist das so? Was ist der Sinn?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 10:48
Die Open Methode der AdoConnection müsste es in einer überladenen Version geben.
adoconnection1.Open(user, password);
Das ist einfacher als User & Password in den ConnectionString einzubauen.
User & PW werden wahrscheinlich aus Sicherheitsgründen aus dem ConnectionString entfernt.
Diess könnte auch Providerspezifisch sein und vom Oracle OLE-DB Provider ausgehen.
fork me on Github
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 10:56
Trägst Du in der Connection Werte für "Persist security Info" ein?
Das ist glaub ich per default = false, erst bei True werden User/pw im connection string abgelegt. Das wäre ggF unproblematisch, solange der String selbst nicht wiederum irgendwo gespeichert wird.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 10:57
Oracle und Zugriff über ADO/OLE DB? Ist eh eine schlechte Kombination?
Der Treiber von MS wurde schon vor Jahren aufs Altengleis geschoben und ist eh eher eine Technologiestudie als für den produktiven Einsatz geeignet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 11:01
Oracle und Zugriff über ADO/OLE DB? Ist eh eine schlechte Kombination?
Der Treiber von MS wurde schon vor Jahren aufs Altengleis geschoben und ist eh eher eine Technologiestudie als für den produktiven Einsatz geeignet.
Es wäre natürlich bzw. seit einiger Zeit der Oracle Treiber zu empfehlen.
Gruß, Jo
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 11:25
vorher mach mal dass:

ConnectionString:='';


Wenn ich hier was mache und z.B. bei einer TADOTable auf eine andere Tabelle zugreifen will mache ich vor dem Open Grundsätzlich:

Connection:=nil;
ConnectionString:='';

Sonst behält er irgendwie immer was irgendwo im Cash ....
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 11:26
Oracle und Zugriff über ADO/OLE DB? Ist eh eine schlechte Kombination?
Der Treiber von MS wurde schon vor Jahren aufs Altengleis geschoben und ist eh eher eine Technologiestudie als für den produktiven Einsatz geeignet.
Es gibt ständig aber neue und die werden auch gepflegt (in WIN8.1 und SQL Server 2013)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 11:47
Oracle und Zugriff über ADO/OLE DB? Ist eh eine schlechte Kombination?
Der Treiber von MS wurde schon vor Jahren aufs Altengleis geschoben und ist eh eher eine Technologiestudie als für den produktiven Einsatz geeignet.
Also der tatsächliche Zugriff geht via ADO -> Oracle's ODBC -> Oracle DB. Ist nicht ideal, haben wir auch glaub ich schon drüber geredet, aber ich hab's noch nichrt geschafft, die etablierten Kollegen zu einer Änderung des ganzen Frameworks über das die internen Programme laufen zu überreden.

Trägst Du in der Connection Werte für "Persist security Info" ein?
Das ist glaub ich per default = false, erst bei True werden User/pw im connection string abgelegt. Das wäre ggF unproblematisch, solange der String selbst nicht wiederum irgendwo gespeichert wird.
Im ConnectionString (hab gerade mal nachgeguckt) wird sogar explizit 'Persist Security Info=False;' angegeben und ich denke da liegt dann auch der Hund begraben. Da muss ich nun aber die Kollegen fragen, was denen lieber ist, ob wir das mal auf true setzen, oder ob wir mal die Prozedur abändern wie die Connection erzeugt wird. Das ist das, was ich testweise gemacht habe.

Im Hintergrund ist nämlich ein Datenmodul, quasi wie ein Singelton verwendet, wo man eine Connection anfordern kann. Hat es die Connection schon in ihrem Pool, gibt sie sie raus, ansonsten wird sie erzeugt, dem Pool hinzugefügt und dann rausgegeben. ConnectionString, bzw. Anmdeldeinfos kommen dabei aus einer dll, wodurch wohl irgendwie die Geheimniskrämer hier befriedigt werden sollen, auch wenn das wohl auch nicht mehr ganz zeitgemäß ist.
Da hab ich jetzt einfach mal die Prozedur zur Connectionanforderung so angepasst, dass sie bei einer bereits vorhandenen Connection prüft, ob diese geschlossen ist und falls ja, weist sie einfach nochmal den ConnectionString zu.
'Persist security' Info auf true setzen wär natürlich irgendwie einfacher.

Sollen mal die Kollegen entscheiden. Bzw. wenn ihr Gedanken dazu habt immer her damit, dann hab ich ggf. Argumente für und wieder, und vllt. hört man dann mal auf mich
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 11:59
Oracle und Zugriff über ADO/OLE DB? Ist eh eine schlechte Kombination?
Der Treiber von MS wurde schon vor Jahren aufs Altengleis geschoben und ist eh eher eine Technologiestudie als für den produktiven Einsatz geeignet.
Es gibt ständig aber neue und die werden auch gepflegt (in WIN8.1 und SQL Server 2013)
Ich spreche nicht von Ado(.net) im allgemeinen sondern den MS-Treiber für Oracle von MS.



Also der tatsächliche Zugriff geht via ADO -> Oracle's ODBC -> Oracle DB. Ist nicht ideal, haben wir auch glaub ich schon drüber geredet, aber ich hab's noch nichrt geschafft, die etablierten Kollegen zu einer Änderung des ganzen Frameworks über das die internen Programme laufen zu überreden.
Ok. Der dürfte halbwegs gehen. Besser wäre natürlich native Kompos wie von DevArt einzusetzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: ADOConnection wieder öffnen und ConnectionString neu zuweisen

  Alt 28. Okt 2013, 12:17
Mit dem OraOleDB.Oracle als ADO-Provider habe ich wenig Probleme.

Und Du (Bernhard) darfst ein nicht vergessen,für ADO entstehen keine zusätzlichen Kosten.
Zumindestens wenn man als DV-Hilfsarbeiter tätig ist, ist das ein Argument gegen das Du wenig entgegenzusetzen hast.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:03 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