![]() |
Datenbank: MySQL/MSSQL/FireBird • Zugriff über: ???
Datenbank-Wrapper?
Hallo erstmal,
meine Frage bezieht sich auf Datenbank-Zugriff zu verschiedenen Datenbanken über einen Wrapper. Ich kenne z.b. Zeos, mit dem ich auf mehrere DBMS zugreifen kann. Allerdings habe ich folgendes "Problem": Die Einzelplatzversion unserer Software soll ein embedded DBMS benutzen, zuerst dachten wir an Paradox, aber nach Stöbern im Forum bin ich auf Firebird Embedded gekommen. Die Mehrplatzversion soll hingegen auf einen SQL Server (MSSQL, MySQL, PQSQL, ...?) im Netzwerk zugreifen. Bei der Installation wird anhand der Seriennummer o.ä. ermittelt, was für eine Version vorliegt, und der entsprechende Code benutzt. Paradox und DBMS "gleichzeitig" zu betreiben erscheint mir jedoch relativ unmöglich, da ich komplett andere Komponenten etc benötige, oder liege ich da falsch? Der Grund ist, dass wir nicht 2 verschiedene Programmversionen (Filedatenbank (Firebird?) / DBMS) erstellen und vor allem pflegen wollen. Vielen Dank schon mal für Eure antworten gruß Sub |
Re: Datenbank-Wrapper?
Ein Beispiel für einen Wrapper der geeignet wäre sind die
![]() Es werden hier verschiedene DBMS unterstützt (Interbase/Firebird, DB2, Oracle. Postgres, Mysql, mssql). Am einfachsten wäre es auf beiden Seiten die selbe DB zu verwenden ( FFBembedded -> FB/mysql-embedded->Mysql, MSSql express bzw. MSDE -> MSSQl). Auch ODBC, ADO bieten DB-Abstraktion. |
Re: Datenbank-Wrapper?
Zitat:
Du musst damit trotzdem die einzelnen Dialekte getrennt behandlen... Ein Lösung wäre ![]() ![]() |
Re: Datenbank-Wrapper?
Heisst das, dass ich mit DataAbstract oder InstantObjects (blicke da noch nicht wirklich, was letzteres eigentlich genau macht) auf verschiedene DBMS (also ende ich bei FBembed lokal, FB/MySQL/MSSQL/PQSQL im netz) zugreifen kann, ohne mich gross um syntax-differenzen zu kümmern?
da die Anwendung zu 99% auf sql basiert, wäre es natürlich angenehm, wenn ich mich um diesen teil so wenig wie möglich kümmern müsste ;) Danke nochmal Sub |
Re: Datenbank-Wrapper?
InstantObjects nimmt dir auch noch den SQL Teil (sowie einen Teil der Klassenmodelierung) ab.
DataAbstract gibt dir einen Middle Tier server, der einen Makro SQL Dialekt besitzt, welcher von DB-spezifischen DA Treiber zu DB-spezifischem SQL übersetzt werden. Habe IO gerade mal angeschaut, sieht ganz nett aus. Vor allem da man damit eklige DataSets gegen richtige Klassen tauschen und trotzdem das ganze an DB Aware Controls binden kann. Hätte ich früher kennen sollen.... :cry: |
Re: Datenbank-Wrapper?
DataAbstract und InstantObjects sind ORM's( Object/Relational Mapper).D.H sie bilden ein Objektmodell auf eine relationale Datenbankstruktur ab.
Im ORM sind verschiede Datenbankabstraktionen für verschiedene DBMS implementiert. Dafür muß aber dein Programm an das ORM angepasst werden. Zitat:
|
Re: Datenbank-Wrapper?
ok jetzt habe ichs verstanden, danke
dann müssen mein kollege und ich uns doch wohl dransetzen und die ultimative wrapper klasse ;) schreiben, da einige unserer kunden mssql installiert haben, einige evtl zu mysql greifen werden, und der rest firebird aufgedrückt kriegt ;) die klasse wird dann wohl so aussehen, dass eine variable sagt welcher dialekt benutzt wird, und im programm selbst nur benutzt wird z.b. insert('sql befehl'), select('sql befehl') und der wrapper bastelt das entsprechend hin darf ja auch nicht alles mitliefern, da wir eine kommerzielle anwendung schreiben da fällt mysql (+embedded) schonmal raus, es sei denn wir bieten den kunden an, dass wir mysql als eine möglichkeit von mehreren unterstützen und die sich das selber runterladen sollen schauen wir mal, was da rauskommt ;) danke nochmal gruß Sub |
Re: Datenbank-Wrapper?
Zitat:
Beide Lösungen haben ihre Vorteile und beide machen dich unabhängig vom SQL Dialekt (Solange ein Broker/Treiber vorhanden ist). |
Re: Datenbank-Wrapper?
hmm ... also irgendwie komm ich weder mit DataAbstract noch mit Instant Objects wirklich klar
die online hilfe bringt mir nicht wirklich was, weil ich noch nicht mal verstehe, warum ich das zeug überhaupt brauche :P kann mir wer aus der misere helfen mit guten tutorials über die ganzen DB systeme? blicke da vor dbexpress, ado, bde, ..... nicht wirklich durch bislang hab ich da nix wirklich brauchbares finden können, dsdt, dp, delphi-forum, delphi-library und delphi.about.com konnten mir nicht wirklich helfen danke euch nochmal Sub |
Re: Datenbank-Wrapper?
Viellecht reicht es ja aus verschiedene Datenmodule für die verschiedenen DBMS zu verwenden oder nur verschiedene "Init"-Methoden eines DatenModuls der Form InitFB, InMSSql, welche für die Zugriffskomponeten (TZQuery) die Sql-Statements for die entsprecheden DB-Dialekte setzt. Eine Realisierung in SP wäre u.U auch sinnvoll ( Problem: z.T. nicht unterstützt; MySQL).
Zitat:
Eine weiter ORM-Variante wäre ObiWan von Jedi. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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-2025 by Thomas Breitkreuz