![]() |
Datenbank: Oracle • Zugriff über: ODAC
Datenbankzugriff zwischen Delphi und Oracle
Hey,
ich bin auf der Suche nach einer ausführlichen Anleitung mit der ich unter Delphi einen Datenbankzugriff auf Oracle machen kann. (ODAC) Habe selbst schon im Netz nach einem Tutorial gesucht, aber leider nicht das passende gefunden. Vielleicht könnt ihr mir ja weiterhelfen. ;-) Gruß major1337 |
Re: Anleitung für Oracle in Delphi
Also großartige Unterschiede zu anderen DBs gibt es bei Oracle nicht.
Es kommt halt darauf an, ob Du den Zugriff selbst ausprogrammieren möchtest, oder mit Fremdkomponenten drauf willst. Für letzteren Fall empfehle ich die DOAs von ![]() Sherlock |
Re: Datenbankzugriff zwischen Delphi und Oracle
Ich möchte mit TOraSession u TSmartQuery einen Zugriff machen.
|
Re: Datenbankzugriff zwischen Delphi und Oracle
Also hast Du schon Komponenten, gut.
In TOracleSession trägst Du die Zugriffsinfos ein, dH. ConnectString und Login. Die Query wird mit der Session verbunden und mit SQL bestückt. Fertig. Alles kein Hexxenwerk. Sherlock |
Re: Datenbankzugriff zwischen Delphi und Oracle
Okay, der Zugriff klappt nun endlich. ^^
Ich möchte aber jetzt über Eingabefelder entweder neue Datensätze anlegen, überschreiben oder löschen. Dafür gibt es ja die tollen Befehle wie update oder insert. Finde aber keine Seite wo das so genau erklärt wird, wie man die Parameter die man durch das Editfeld bekommt mit der SQL in Verbindung bringt. |
Re: Datenbankzugriff zwischen Delphi und Oracle
Also ich kenne Deine Komponenten nicht und weiss jetzt grad nicht, was Du mit Editfeldern meinst, aber Variablen kannst Du in Orcale über einen ":" kennzeichnen. Beispiel:
SQL-Code:
Die Variable ":name" declariert werden mit irgendwas in der Form
select name, gebdatum from mitarbeiter
where vorname = :name
Delphi-Quellcode:
Gefüllt mit:
Query.DeclareVariable('name', otString);
Delphi-Quellcode:
Meinst Du sowas?
Query.SetVariable('name', 'Dieter');
Sherlock |
Re: Datenbankzugriff zwischen Delphi und Oracle
Bei der Installation der ODAC-Komponenten wird auch ein Verzeichnis mit Beispielen angelegt (Demos), schau dir die zuerst mal an. Darüber hinaus ist die Hilfe für die ODAC-Komponenten recht ausführlich (in der Entwicklungsumgebung unter dem Menü Oracle zu finden).
Grüße Mikhal |
Re: Datenbankzugriff zwischen Delphi und Oracle
Okay, danke! Es geht mit ParamByName. Habe aber npch eine weitere Frage
Delphi-Quellcode:
Könnt ihr mir erklären für was was dieses a.rowid, a steht? Habe gehört das es ein Alias für ... ist, aber richtig verstanden habe ich es nicht.
SmartQuery1.sql.add('select a.rowid, a. * from sqlbase a where klassenstuffe = ''13''');
|
Re: Datenbankzugriff zwischen Delphi und Oracle
Hi!
Intern führt die Oracle-Datenbank für jeden Datensatz eine eindeutige Adresse mit, das ist die ROWID. Darüber klappt der eindeutige Zugriff auf einen Datensatz, auch wenn kein Primärschlüssel vorhanden sein sollte. p. |
Re: Datenbankzugriff zwischen Delphi und Oracle
|
AW: Datenbankzugriff zwischen Delphi und Oracle
Hi, ich muss eine Schnittstelle mit Delphi programmieren und auf die oracle-DB zugreiffen.
Ich habe z.B. für Access-DB: ADO-Connection, ADOQuery und DataSet benutzt, aber für oracle funktioniert das nicht! Könnt ihr mir sagen, welche Komponenten muss ich für den Zugriff auf oracle-DB benutzen? Danke. VG blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Du könntest es mal mit den
![]() |
AW: Re: Anleitung für Oracle in Delphi
Zitat:
Sollte Oracle mal die API größer ändern wird es fraglich sein ob man hier noch Zeitnah eine Lösung bekommt. Für Oracle ist als Kaufkomponente eher DevArt zu empfehlen (oder natürlich Zeos). Falls man die richtige Delpi-Edition hat dürfte auch FireDAC ganz gut sein. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Dazu musst Du mit dem Oracle Client den Oracle OLEDB Provider installieren (nicht den von MS) Der ODAC ist eine Paketinstallation, die auch den OLEDB Provider installiert. Hab ich aber noch nie wirklich genutzt. Um den OLEDB Provider zu installieren, muss man entweder den "Fat" Client von Oracle einsetzen (einige hundert MB im Download) oder den Instant Client, hab ich hier glaub ich "neulich" noch irgendwo hier verlinkt. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
|
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Nach der Instantclientinstallation muss der OLEDB Provider separat aus dem ODAC Paket installiert werden. Das ist eine Befehlszeile:
Code:
P.S: Mir ist auch gerade eingefallen, warum ich das getrennt gemacht habe. Man kann auch gleich alles aus dem ODAC installieren. Der Instant Client ist aber aktueller. Also nehm ich nur den OLEDB Provider aus dem ODAC.
install.bat oledb .. (je nach Konfiguration)
|
AW: Datenbankzugriff zwischen Delphi und Oracle
ich habe mit diese Komponenten versucht, aber es klappt immer noch nicht?!
|
AW: Datenbankzugriff zwischen Delphi und Oracle
Auf diese umfassende Fehlerbeschreibung kann man eigentlich nur mit einer Komplettanleitung antworten:
![]() War übriegens der erste Treffer wenn man "firedac oracle" bei Google eingibt... |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Code:
so ähnlich sieht das aus...habe paar sachen geändert
HSNRDB=
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 1x.1x.x.xx)(PORT = 1521)) ) (CONNECT_DATA = (sid = hsnrdb)) ) |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Wie auch immer. Was klappt denn nicht? Der Delphicode? Der Oracle Zugriff? Hier ist niemand hellseher, wenn Du Hilfe haben möchtest, dann musst Du etwas präziser werden. |
AW: Datenbankzugriff zwischen Delphi und Oracle
ich habe nur kurz beschrieben, wie ich vorgegangen bin und das sollte eine Antwort an Blup...
wie auch immer, der Oracle-Zugriff klappt's immer noch nicht... |
AW: Datenbankzugriff zwischen Delphi und Oracle
Erstmal schauen, ob der Oracle Zugriff generell funktioniert.
z.B. mit TOAD in Deinem Fall (die Zugriffsverfahren da kenn ich nicht) dann Zugriff für Deinen Bedarf prüfen falls es ADO ist, ist ein funktioierender ODBC Zugriff nicht ausreichend ADO geht über OLEDB eine ADO Verbindung kannst Du bspw. mit einer UDL Datei prüfen. Wenn Du andere Techniken einsetzt, ZEOS bspw. brauchst Du glaube ich kein ADO/OLEDB. Und wie gesagt "Oracle Zugriff geht nicht" kann man fast nichts mit anfangen. Es kann vieles sein. Also genau beschreiben, was nicht geht, am besten eine Fehlermeldung liefern oder auch einen Screenshot, wenn es keine Fehlermeldung gibt. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Liste der Anhänge anzeigen (Anzahl: 1)
Zugriff von Delphi auf die Oracle
Beispiel: 1. ADOCOnnection -> ConnectionString -> Aufbauen -> Provider: Microsoft OLE DB Provider for Oracle -> Verbindung: Servername, Benutzername und Kennwort eingeben -> Verbindung Testen. Anhang 42579 VG blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Liste der Anhänge anzeigen (Anzahl: 1)
Zugriff von Delphi auf Oracle
2. FireDAC:
|
AW: Datenbankzugriff zwischen Delphi und Oracle
hm, 2 verschiedene TNS Fehlermeldungen, aber Du gehst auf die gleiche DB?
Kommst Du mit irgendeinem Tool auf die Datenbank? Kommst Du mit TOAD auf die Datenbank? Kommst Du per UDL File auf die Datenbank? Gibt es andere Oracle Installationen auf dem Rechner? Stehen verschieden Oracle Pfade in der Path Variable? Hast Du sqlplus oder tnsping installiert? Wie ist der Datenbankname und wie ist der TNS Name? |
AW: Datenbankzugriff zwischen Delphi und Oracle
TNS ist nicht korrekt konfiguriert. Liegt vermutlich daran, daß Du da eine tnsnames.ora herumkopiert hast. Was liegt denn unter
Delphi-Quellcode:
?
"OraInstallDir"\product\"Version"\client\network\admin
Sherlock |
AW: Datenbankzugriff zwischen Delphi und Oracle
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
- Die DB-Name und TNS-Name sind unterschiedlich - es gibt OraClient 11g home_1 und home_2... home_1 wird benutzt |
AW: Datenbankzugriff zwischen Delphi und Oracle
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Code:
so, hier habe ich die tnsnames.ora reinkopiert.
C:\u01\app\oracle\product\11.2.0\client_1\network\admin
Mit Toad hat diese konfiguration sofort funktioniert. VG blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Lass Dir bitte mal die Umgebungsvariablen anzeigen.
DOS Box >set Von der Ausgabe bitte die Pfadvariable, Variablen mit ORA und die Variable TNS_ADMIN hier posten. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Code:
C:\u01\app\oracle\product\11.2.0\client_1\network\admin
Code:
C:\u01\app\oracle
|
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Hast Du nun tnsping oder nicht? Auch das kannst Du per cmd einfach aufrufen, wenn es installiert ist (Deine aktuellen Angaben, sehen so aus, dass es installiert sein könnte > Fat Client) |
AW: Datenbankzugriff zwischen Delphi und Oracle
Ich verwende für den Zugriff auf Oracle die Komponenten von Devart (ODAC)
Die besitzen auch die Möglichkeit direkt (direct access) auf eine Oracle- Datenbank zuzugreifen. Hierzu benötigt man auf dem PC KEINEN Client von Oracle und damit auch nicht die TNS_NAMES.ORA . Man erspart sich viel Arbeit bei der Verteilung auf die Zielrechner. Ansonsten verwendet man die üblichen Komponenten von Delphi für die Datenbankverwaltung. Ich verwende nur noch diesen Weg. Übrigens kann man diesen Weg auch beim TOAD gehen. Gruß Borwin |
AW: Datenbankzugriff zwischen Delphi und Oracle
Auch mit Oracle Client benötigt man nicht unbedingt den tnsnames Kram.
Man kann z.B. EZConnect verwenden. Im vorliegenden Fall (Praktikum) wird man wahrscheinlich keine Zusatzkomponenten anschaffen. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
VG blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Man bekommt etwas Augenkrebs, aber ich sehe mindestens 4 Einträge, darunter ein Client und ein Server (XE)
Kleiner Tipp: Auch in den CMD Fenstern kann man mit Copy und Paste arbeiten, dann erhält man Text, den man im Editor bequem durchsuchen kann. Starte bitte in einem solchen Fenster den Befehl TNSPING gefolgt vom TNS Datenbanknamen. Der Befehl gibt dann die verwendete TNSNAMES Datei an, die er zur Namensauflösung verwendet und das Ergebnis des Ping Tests. Also >TNSPING HSNRDB Die angezeigte TNSNAMES Datei (Pfad und Dateiname) ist die, die Deinen Eintrag enthalten sollte. Wenn Du kein OK bekommst, brauchst Du gar nicht erst mit Delphi anzufangen. Wenn Du sowieso die komplette DB installiert hast, brauchst Du keine extra Clientinstallation. Kannst Du eigentlich theoretisch alles rauswerfen, also deinstallieren. Ich weiß leider nicht auswendig, ob die XE Installation auch mit OLEDB Treiber kommt. Aber eins nach dem anderen, erstmal TNSPING Ergebnis anschauen. |
AW: Datenbankzugriff zwischen Delphi und Oracle
Hi,
mit folgende Komponenten konnte ich eine Verbindung zur Oracle-DB erstellen ... yes
Code:
Ich benutze DataSource und DBGrid.
Diese Operation ist bei einer unidirektionalen Datenmenge nicht gestattet.
Vielen Dank an alle... blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Hallo,
inzwischen funktioniert der Zugriff auf OracleDB auch mit:
ich kann mir auch Datensätze auf DBGrid anzeigen lassen. Vielen Dank noch mal an alle... VG blema |
AW: Datenbankzugriff zwischen Delphi und Oracle
Es wäre schön, wenn Du jetzt noch schreiben würdest was Du unternommen hast, damit alles funktioniert. Vielleicht hat demnächst jemand anderes das gleiche Problem, dem wäre dann damit geholfen.
Gruß K-H |
AW: Datenbankzugriff zwischen Delphi und Oracle
Zitat:
Delphi Komponenten:
VG blema |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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 by Thomas Breitkreuz