AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO - Der Provider kann nicht gefunden werden

ADO - Der Provider kann nicht gefunden werden

Ein Thema von andreash · begonnen am 5. Dez 2008 · letzter Beitrag vom 8. Dez 2008
Antwort Antwort
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#1

ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 14:04
Datenbank: Oracle • Zugriff über: ADO
Hallo,

ich habe folgendes Problem:

Ich möchte über eine ADOConnection auf eine Oracle-DB zugreifen und setze Provider='OraOLEDB.Oracle.1'.
Wenn ich nun Versuche, die Eigenschaft ADOConnection.Properties.Item['User ID'] zu setzten wird folgende Exception geworfen:
"EOleException: Der Provider kann nicht gefunden werden. Möglicherweise ist er nicht richtig installiert worden".

Der Zugriff erfolgt in einem Programm mit mehreren Threads. Wenn ich Provider auf 'MSDASQL.1' setze funktionieren alle Lesezugriffe nur beim Schreiben gibt es Probleme.

Der Provider ist installiert, da die dieser mit anderen Programmen funktioniert. Auch das Enumierieren aller verfügbaren Provider, zeigt, dass der Provider vorhanden ist.

Tippfehler sind auch ausgeschlossen.

Welche Voraussetzungen müssen erfüllt sein, damit der Provider gefunden wird?

Ich bin für jeden Hinweis dankbar!
Andreas

[Edit] "Typfehler" korrigiert. [/edit]
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 14:11
Was ist denn wenn du den ConnectionString von ADO mit dem Dialog zusammensetzt? Gibt es dort den Provider?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 14:14
Ist der Provider OraOLEDB überhaupt Threadsave bzw. darf er in anderen Threads als den Hauptthread überhaupt verwendet werden.
Auch ist Oracle immer allergisch wenn irgendwelche Umgebungsvariablen (z.B. ORACLE_HOME) nicht gefunden werden. Sind diese im Thread verfügbar?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 14:15
Zitat von andreash:
Ich möchte über eine ADOConnection auf eine Oracle-DB zugreifen und setze Provider='OraOLEDB.Oracle.1'.
Warum verwendest du keine UDL-Datei ??
http://www.efg2.com/Lab/Library/Delp...UDL/index.html
UDL-Dateien enthalten alle Eigenschaften einer ADO-Connection und kann zur Laufzeit eines Programms dynamisch geladen werden.
Ein grosser Vorteil ist, dass man ausserhalb des Programms ein Verbindungstest zur Datenbank ausführen kann.

PS:
achja, die berüchtigten Tippfehler.
Du schreibst ja: Typfehler sind auch ausgeschlossen.
und meinst damit wohl Tippfehler.
Das bedeutet aber, dass man Tippfehler niemals ausschliesen sollte!
Auch hier hat eine UDL-Datei den Vorteil, dass diese Fehlerquelle nicht zum Zuge kommen kann.
Andreas
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#5

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 14:54
Danke für die schnellen vielen Antworten.

Zitat:
Was ist denn wenn du den ConnectionString von ADO mit dem Dialog zusammensetzt? Gibt es dort den Provider?
Den Provider gibt es dort. Beim Zusammenstellen des Connectionstrings über den UDL-Wizard wird genau dieser eingetragen und die Verbindung ist beim Test über dessen Dialog erfolgreich.

@shmia: Aus Designgründen verwende ich keine UDL-Datei in diesem Projekt. Mit meinem "Typfehler" hast du mich natürlich ertappt.
Den Providernamen habe ich aus einer UDL-Datei kopiert. Zum Testen habe ich den Text, den ich in die Eigenschaft Provider eintrage, mit den Namen der in der Registrierung eingetragenen Provider verglichen und es gab einen Treffer.

@Bernhard Geyer: Das ist ein guter Einwand, weil die DB-Zugriffe nicht im Hauptthread laufen. Ich werde recherchieren.
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 15:45
Wenn du nicht im Hauptthread bist brauchst du mindestens coinitialize. Und am besten die ganze Datenbankarbeit in einen Thread legen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#7

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 5. Dez 2008, 16:31
Die DB-Funktionen sind in einer Dll gekapselt, die keine Threads verwendet. CoInitialize wird beim Linken aufgerufen.

In der Zwischenzeit habe ich das Programm so geändert, dass die Aufrufe über den Hauptthread erfolgen. Aber der Fehler besteht immer noch. Über einen Vergleich von MainThreadID und GetCurrentThreadID überprüfe ich, ob ich dabei keinen Fehler mache.

Übrigens wird die DLL in einem Dienst verwendet. Vielleicht ist das eine Ursache. Ich bin für jeden weiteren Rat dankbar.
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#8

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 8. Dez 2008, 13:33
Nachdem es auf einem anderen Rechner funktioniert, konnte ich Ursachenforschung betreiben: Ich habe wohl die Oracle-Client Version verwendet (9 statt 10, beide sind installiert). Der Gedanke von "Bernhard Geyer" war somit richtig. Unter HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE habe ich den Wert für ORACLE_HOME auf das richtige Verzeichnis gesetzt. Nun funktioniert die DB-Verbindung.
Warum es aber unter Umständen vorher trotzdem funktionierte und nur der Dienst Ärger machte, weiß ich nicht.
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 8. Dez 2008, 13:43
Zitat von andreash:
... Der Gedanke von "Bernhard Geyer" war somit richtig. Unter HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE habe ich den Wert für ORACLE_HOME auf das richtige Verzeichnis gesetzt. Nun funktioniert die DB-Verbindung.
Warum es aber unter Umständen vorher trotzdem funktionierte und nur der Dienst Ärger machte, weiß ich nicht.
Es gibt neben Registry-Key auch Umgebungsvariablen. Welche gezogen weiß vermutlich nur das Oracle
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#10

Re: ADO - Der Provider kann nicht gefunden werden

  Alt 8. Dez 2008, 14:43
Zuerst habe ich es auch mit einer Umgebungsvariable ORACLE_HOME versucht. Das hat nicht funktioniert. Vielleicht wird der Registryeintrag bevorzugt. Für weitere Tests fehlt mir im Moment die Zeit.

Vielen Dank für die Lösungsideen!
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:00 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