Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anfängerfrage :: ADO Connection (https://www.delphipraxis.net/86054-anfaengerfrage-ado-connection.html)

Martin W 8. Feb 2007 11:25

Datenbank: MySQL; MSSQL; Oracle • Version: - • Zugriff über: ADO

Anfängerfrage :: ADO Connection
 
Hi


Ich habe eine Anwendung, welche mit 3 verschiedenen Datenbanken umgehen können soll. Deshalb habe ich mich entschiedenen, die ADO Komponenten zu verwenden. ( Hat dies Nachteile? Gehen die noch unter VISTA? ) Klappt auch alles ganz gut so weit, nur habe ich 2 Fragen dazu ::

a) Heißt der Provider immer MSDASQL ? Ich meine, dass ist ja der für die ODBC Verbindungen...
b) Ist die Denkweise korrekt wenn ich sage: "Jedes ODBC Profil, welches ich in der Systemsteuerung zu ner Datenbank erfolgreich verbinden lassen kann, kann ich auch mit den ADO Komponenten unter Delphi ohne Probleme ansteuern".


Der User soll in der Anwendung den ConnectionString, mit Hilfe eines Asssistent, selber erstellen können um größtmögliche flexibilität zu behalten.

a) Wie kann ich eine Liste der verfügbaren Provider und die Datenquellennamen anzeigen lassen?
b) Kann ich auch den Assistenten in der Endversion verwenden, den Delphi verwendet? Also der einem hilft den COnnectionString zu erstellen... wennn ja, wie?


lg
Martin W.

Bernhard Geyer 8. Feb 2007 12:45

Re: Anfängerfrage :: ADO Connection
 
Willst Du dir wirklich ADO für MySQL und Oracle antun? Erst mal einen passenden Provider finden und diesen auf jeden Client installieren?

Ich empfehle dir das sog. Bridge-Pattern/Brückenmuster anzuwenden um die Datenbank-Unterschiede in einer entsprechenden DB-Layer-Klasse zu kapseln. Für MySQL und Oracle empfehle ich dir mal die Komponenten von Core Lab anzuschauen (Im Bereich MySQL gibts nichts schnelleres was TDataset-Basierent ist, Oracle habe ich andere Kompos). Eine Verwendung von ADO als Abstraktionslayer bringt dir keine Lösung um das unterschiedliche Verhalten der Datenbank zu kapseln. Selbst bei varchars verhalten sich die Datenbanken unterschiedlich).

Martin W 8. Feb 2007 12:50

Re: Anfängerfrage :: ADO Connection
 
In erster Linie will ich flexibel sein... darum habe ich ADO genommen. Oracel / MSSQL lassen wir mal weg...

Ziel ::
Zitat:

Ich möchte eine zukunfsfähige Win32 Anwendung erstellen, die mit verschiedenen Datenbanken arbeiten kann. Entwickelt wird mit MySQL.

Bin ich mit ADO da ganz falsch? Oracel und Co... vergessen wir die Beispiele einfach mal, also keine spezialkomponenten nennen... Was der Enduser am Ende hat - da will ich relativ flexibel sein.

lg

Bernhard Geyer 8. Feb 2007 13:06

Re: Anfängerfrage :: ADO Connection
 
Zitat:

Zitat von Martin W
In erster Linie will ich flexibel sein... darum habe ich ADO genommen. Oracel / MSSQL lassen wir mal weg...

Am Flexibel bist du wenn du für jede DB einen Zugriffskomponente entwickelst. Oder glaubst du das ein per ODBC angebundene DB2 im Oracle-Modus deine für MySQL optimierten SQL-Abfragen in allen fällen versteht?

Zitat:

Ich möchte eine zukunfsfähige Win32 Anwendung erstellen, die mit verschiedenen Datenbanken arbeiten kann. Entwickelt wird mit MySQL.
Spricht doch nichts dagegen. Jetzt kommst nur darauf an ob du eine Minimale MySQL vorrausetzt, eine Spezielle MySQL-Storage-Engine verwendest, .... Auch schon bei MySQL ist es nicht ganz ohne das ganze Spektrum der laufenden MySQL-Installationen zu unterstützen.

Zitat:

Zitat von Martin W
Bin ich mit ADO da ganz falsch?

Meines Erachtens: Ja!

Zitat:

Zitat von Martin W
Oracel und Co... vergessen wir die Beispiele einfach mal, also keine spezialkomponenten nennen...

Dann wird es schon schlecht.

Wo werden wohl mehr Problem/Fehler auftreten:

Anwendung -> ADOExpress/dbGo -> ADO -> OLE DB-Provider (-> evtl. nativer DB-Treiber) -> Datenbank

oder

Anwendung -> (z.B. MyDAC von Core Lab) -> Datenbank

und das beste ist auch noch: Kein Treiber (ADO oder ODBC) installieren, keine Einrichtung von ODBC und noch nicht mal eine DLL. Nur die Exe wird ein paar 100 kByte größer.

Zitat:

Zitat von Martin W
Was der Enduser am Ende hat - da will ich relativ flexibel sein.

Ohne das DBMS zu kennen wirst du nicht glücklich werden. SQL ist zwar standardisiert, aber jeder kocht sein eigenes Süppchen bei Dingen die erst später festgelegt wurden.

Martin W 8. Feb 2007 13:35

Re: Anfängerfrage :: ADO Connection
 
OK. Also schreibe ich eine Klasse, die die 5 größten Datenbanken verwenden kann. Je nach verwendeter Datenbank wird eine andere Komponente verwendet.

Welches sind die 5 meist verbreitenen Datenbanken ?
  • Microsoft Access
  • Microsoft SQL Server
  • MySQL
  • Oracle
  • Firebird

... das dürften doch die 5 großen sein, oder? Wenn ich diese 5 unterstütze, müsste ich doch ganz gut dabei sein... Welche Komponenten (welche auch kommerziell genuztz werden dürfen ohne das ich irgendeinen Programmquellcode mitgeben muss) sollte ich dann nehmen?

Martin W 8. Feb 2007 13:46

Re: Anfängerfrage :: ADO Connection
 
CoreLabs KOmponenten gefallen mir.. ich glaub diese werde ich erst mal für
  • MySQL
  • MSSQL
  • Firebird

verwenden... wenn ich die 3 Unterstützt ist das doch schon mal ganz sinnvoll. Erweitern kann man es später ja immer noch.

Bernhard Geyer 8. Feb 2007 13:55

Re: Anfängerfrage :: ADO Connection
 
Zitat:

Zitat von Martin W
CoreLabs KOmponenten gefallen mir.. ich glaub diese werde ich erst mal für

Für MySQL kann ich schon mal sagen: Gute Entscheidung!

Martin W 8. Feb 2007 14:44

Re: Anfängerfrage :: ADO Connection
 
Hey die Teile sind ja echt mal geil... VErbindung habe ich hinbekommen. Wenn ich jetzt einen SQL Befehl hinschicken will.. mache ich des wie? Bin noch anfänger...

... momentan hab ich nur die Connectkomponente drauf.

Bernhard Geyer 8. Feb 2007 15:00

Re: Anfängerfrage :: ADO Connection
 
Schau dir mal die mitgelieferten Beispiele an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 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