Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP) (https://www.delphipraxis.net/20081-einige-fragen-zu-delphi-8-datenbankanb-bdp-versus-odp.html)

MaBuSE 13. Apr 2004 13:13


Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Stichwörter:
BDP = Borland Data Provider
ODP = Oracle Data Provider for .net


Hallo,

ich habe hier eine Delphi 8 Architekt installiert.

Folgende Fragen sind aufgekommen:

Datenbankanbindung (BDP versus ODP)

Ich möchte eine Verbindung zu einem Oracle SQL Server aufbauen,
aber kein BDE, ADO oder so verwenden.
Von Oracle gibt es eine Schnittstelle Namens "Oracle Data Provider for .net".
Das bekomme ich auch in Delphi 8 installiert. (.net Komponenten)

Ich habe nur ein kleines Problem in der Benutzung.

Die "Borland Data Provider" Komponenten werden wie folgt verwendet:
  • 1. BdpConnection wird ein ConnectionString zugewiesen
    2. BdpCommand wird eine Connection zugewiesen (z.B. BdpConnection1)
    3. BdpCommand wird ein CommandText zugewiesen (z.B. select * from table1)
    4. BdpDataAdapter wird ein SelectCommand zugewiesen (z.B. BdpCommand1)
    5. BdpDataAdapter kann nun ein DataSet zugewiesen werden (z.B. DataSet1)
    6. BdpDataAdapter kann nun mit Active := true aktiviert werden.
    7. Nun kann z.B. ein DataGrid mit DataSet1 oder der automatisch generierten DataTable1 verbunden werden
-> Es werden Daten angezeigt.

Bei den "Oracle Data Provider for .net" Komponenten sollte das eigentlich genauso gehen
  • 1. OracleConnection wird ein ConnectionString zugewiesen
    2. OracleCommand wird eine Connection zugewiesen (z.B. OracleConnection1)
    3. OracleCommand wird ein CommandText zugewiesen (z.B. select * from table1)
    4. OracleDataAdapter wird ein SelectCommand zugewiesen (z.B. OracleCommand1)
    5. OralceDataAdapter kann nun leider kein DataSet zugewiesen werden (Diese Eigenschaft existiert nicht)
    6. OracleDataAdapter kann nun nicht mit Active := true aktiviert werden. (Diese Eigenschaft existiert nicht)
    7. Nun kann z.B. ein DataGrid mit DataSet1 verbunden werden (Die automatisch generierten DataTable1 gibt es auch nicht)
Man kann zur Laufzeit folgenden Code ausführen, dann werden Daten angezeigt:
Delphi-Quellcode:
Self.OracleDataAdapter1.Fill(Self.Dataset1)
Aber leider nicht in der IDE

In dem von Delphi generierten Quellcode (procedure TWinForm.InitializeComponent) kann ich diese Zeile auch einfügen.
Beim Wechsel von Code auf Design ist nun auch tatsächlich eine Datenverknüpfung hergestellt. Nach einiger Zeit entfernt Delphi meine Zeile aus seinem Code.

Meine Frage: Wie mache ich das denn nun am geschicktesten?

Ich will auf keinen Fall so was wie die BDE oder ADO dazwischen haben.
Die .net Komponenten von Oracle sollten ja auch unterstützt werden.

Frage 2: Kann ich das nur in WinForms verwenden?
(In VCL Modus bekomme ich die Oracle Komponenten nicht installiert)

Für eine Antwort bedanke ich mich schon mal im Voraus.

MaBuSE


ps: Hier ein Bild

[edit=fkerber]Bild im Anhang. Mfg, fkerber[/edit]

kiar 13. Apr 2004 14:02

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
hatten wir erst,

es werden nur WinForms unterstützt.

zu frage eins warte auf unseren Oracleman :mrgreen:

der wird schon auftauchen :dancer:

raik

Bernhard Geyer 13. Apr 2004 14:08

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
1, ADO.NET ist darauf ausgelegt keine Connected-Dataset zur verfügung zu stellen. Sprich Du mußt vieles im Code machen. Der BDP bietet u.a. einen "Live"-Dataset auch in der IDE an (als feature gegenüber dem "nackten" ADO.NET). Deshalb sind auch nicht die von Delphi/TDataset bekannten properties wie Active nicht verfügbar.

2, Codezeilen in den Initialize-Abschnitt zu kopieren ist nicht anzuraden. Ist der Winforms-Ersatz für die Delphi-DFM-Dateien. Und dort kann man auch nicht alles was man will unterbringen.

2, Du kannst ADO.NET auch in VCL-Forms verwenden. In eingeschränkten Maße auch mittels Komponenten. Jedoch wird es keine Anbindung an das bekannte TDataset/TDatasource geben, da hier die Basisfunktionalität zu unterschiedlich ist. Aber wieso willst Du das machen? Du hast unter Winforms doch auch genug DB-Sensitive Komponenten?

MaBuSE 13. Apr 2004 14:37

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Zitat von kiar
hatten wir erst,
es werden nur WinForms unterstützt.

Es gibt ja unter "Datei - Neu... - Weitere..." WinForm Controls Package einen Wizard zum Importieren von .net Komponenten. Einen Button und Checkbox hab ich mal ausprobiert. Die Oracle Komponenten haben leider nicht funktioniert.

Zitat:

Zitat von Bernhard Geyer
2, Du kannst ADO.NET auch in VCL-Forms verwenden. In eingeschränkten Maße auch mittels Komponenten. Jedoch wird es keine Anbindung an das bekannte TDataset/TDatasource geben, da hier die Basisfunktionalität zu unterschiedlich ist. Aber wieso willst Du das machen? Du hast unter Winforms doch auch genug DB-Sensitive Komponenten?

Wir haben einige Softwareprojekte die unter Delphi 5 und 7 entwickelt wurden.
Es wurde die Direct Oracle Access (DOA) Komponenten verwendet. Also keine BDE!
Das soll auch so bleiben. Ich prüfe nun in wie weit Delphi 8 für uns das richtige ist. (Portierung und Neuentwicklungen)

Ich probiere nur mal alles aus, und teste ein wenig bevor wir unser 1. Projekt portieren.

Leider ist Delphi 8 noch zu neu als das man vernünftige Aussagen zu Performance oder "Alltagsprobleme" im Netz findet.

Bernhard Geyer 13. Apr 2004 15:44

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Es wurde die Direct Oracle Access (DOA) Komponenten verwendet.
Wenn es DOA für D8 in einer VCL.NET-Version gibt (was ja der Fall sein soll) so ist die Umstellung auf den Oracle.NET-Provider unnötig (jedenfalls wenn man den "einfachen" umstieg auf VCL.NET durchführt.

MaBuSE 13. Apr 2004 16:29

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Zitat von Bernhard Geyer
Wenn es DOA für D8 in einer VCL.NET-Version gibt (was ja der Fall sein soll) so ist die Umstellung auf den Oracle.NET-Provider unnötig (jedenfalls wenn man den "einfachen" umstieg auf VCL.NET durchführt.

Richtig, aber mein Arbeitgeber will nun mal direkt auf ODP aufsetzen. ODP funktioniert ja auch (s.o.) Ich bin ja nur am prüfen, ob ODP in Delphi auch so einfach wie BDP eingesetzt werden kann, oder ob man "unnötig" viel von Hand programmieren muss. (Gilt für Neuentwicklungen unter WinForm)

Wir hatten sehr viele Probleme mit der BDE und es besteht die Angst, das mit der BDP auch noch viele Probleme kommen. Wir wollen nach Möglichkeit direkt auf ODP aufsetzen, aber die Vorteile von Delphi nicht verlieren.

Das bin ich am prüfen.

Meine Delphi Erfahrungen beschränken sich auf die Versionen 1 bis 6 und leider kenne ich .net (noch) nicht.

Ich arbeite mich gerade in .net ein.

Deshalb taucht von mir evtl noch die eine oder andere dotnet DAU Frage auf :coder:

Danke für die Antwort

Bernhard Geyer 13. Apr 2004 17:34

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Richtig, aber mein Arbeitgeber will nun mal direkt auf ODP aufsetzen.
Welche Vorteile verspricht er sich davon? Vermutlich ODP (wie auch der Net8-Treiber) installiert werden. D.h. die Verteilung wird nicht einfacher.

Zitat:

ob man "unnötig" viel von Hand programmieren muss.
Wäre für mich kein Nachteil. Unsere Anwendung ist eh für mehre DB's ausgelegt und da kommt man mit einfach verbindbare Komponenten an die Grenze.

Selbst habe ich bisher nur 2-3 Toolanwendungen erfolgreich portiert. An DB-Anwendung habe ich mich (aus mangel an TDataset-Native-Treiber) noch nicht gewagt. Die BDE ist bei uns schon einige Jahre nur noch 2te Wahl (nur noch Zugriff auf ODBC) und wird dieses Jahre komplett entsorgt.

Robert_G 13. Apr 2004 17:46

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Hi MaBuSe :hi:

ODPs gibt es 2!
Einmal den aktuellen von Oracle und den von Microsoft.
Um in in die Tool Palette zu kriegen:
  • Im Menu auf Components\Inst. .Net-Components klicken
  • Sortiere nach Namespace
  • Unter Oracle.DataAccess.Client findest du den von Oracle (den findest du bei www.oracle.com, einfach nach ODP suchen und installieren ;) )
  • Unter System.Data.OracleClient liegt der von M$
  • einfach das Häkchen setzen und *fump* sind sie in der Tool palette

Ich persönlich bervorzuge den "richtigen" ODP (der von Oracle).
Der von M$ ist eigentlich nur ein Prerelease des jetzigen.

Nachtrag: Man kann mit dem DataAdapter auch BDP-like per "generate DataSet" ein DataSet erzeugen, dieses bekommt autom. den richtigen Ref Cursor zugewiesen.

MaBuSE 14. Apr 2004 08:02

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Zitat von Robert_G
Nachtrag: Man kann mit dem DataAdapter auch BDP-like per "generate DataSet" ein DataSet erzeugen, dieses bekommt autom. den richtigen Ref Cursor zugewiesen.

Danke für die Installationsanleitung, aber wie Du sicher schon gelesen hast, habe ich die Komponenten problemlos installieren können.

Meine Frage war wie kann ich in der IDE dem DataAdapter ein Dataset zuweisen.
Delphi-Quellcode:
Self.OracleDataAdapter1.Fill(Self.Dataset1)
funktioniert ja leider nur zur Laufzeit. Aber vieleicht habe ich ja ein paar Properties übersehen :?

Wie geht das denn mit dem "generate DataSet" ?

MaBuSE 14. Apr 2004 08:44

Re: Einige Fragen zu Delphi 8 (Datenbankanb. BDP versus ODP)
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Richtig, aber mein Arbeitgeber will nun mal direkt auf ODP aufsetzen.
Welche Vorteile verspricht er sich davon? Vermutlich ODP (wie auch der Net8-Treiber) installiert werden. D.h. die Verteilung wird nicht einfacher.

Die Oracle Treiber müssen eh auf jedem Rechner vorhanden sein. Also ist der ODP auch auf jedem Rechner installiert.
Wir haben mit der BDE sehr schlechte Erfahrungen gemacht. (Performance, Unverträglichkeiten, Versionskonflikte, fehlende Unterstützung der "neuen" Oracle Versionen bzw. Oracle Besonderheiten, ...). Es besteht die Befürchtung, das BDP ähnliche Alltagsprobleme bringen wird. ODP wird eh mit den Treibern mitinstalliert und ist für .net gedacht. Warum also nicht direkt ODP benutzen, statt eine zusätzliche Schicht von Borland dazwischenklemmen. Im Moment verwenden wir DOA Komponenten die einen direkten Zugriff auf Oracle ermöglichen und als TDataSet den gleichen Komfort bieten wie BDE.
(Link: Direct Oracle Access Komponenten)

Zitat:

Zitat von Bernhard Geyer
Zitat:

ob man "unnötig" viel von Hand programmieren muss.
Wäre für mich kein Nachteil. Unsere Anwendung ist eh für mehre DB's ausgelegt und da kommt man mit einfach verbindbare Komponenten an die Grenze.

Es gibt Fälle, da möchte man in der IDE schon zur Entwicklungszeit visuell eine Datenbankverbindung mit dem Komponenten machen und sehen wie das mit Daten aussieht. (Das kann ja Delphi auch)
Es kann ja nicht die Lösung sein in Edit Felder die Daten mit
Delphi-Quellcode:
Edit1.Text := Datenbank.Tabelle.Wert
zuzuweisen. (Dieses Beispiel war bewust übertrieben)

Zitat:

Zitat von Bernhard Geyer
[Selbst habe ich bisher nur 2-3 Toolanwendungen erfolgreich portiert. An DB-Anwendung habe ich mich (aus mangel an TDataset-Native-Treiber) noch nicht gewagt. Die BDE ist bei uns schon einige Jahre nur noch 2te Wahl (nur noch Zugriff auf ODBC) und wird dieses Jahre komplett entsorgt.

Wir haben noch gar nichts portiert. Wir sind noch am prüfen ob der Umstieg auf Delphi 8 lohnt, oder ob man (wenn man eh alles neu machen muss) gleich zu den MS Produkten wechselt (C#) Nächste Woche werde ich wahrscheinlich mal eine kleinere Datenbankanwendung portieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Seite 1 von 2  1 2      

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