![]() |
Plattformunabhängige Datenbankunterstützung
Hallo :bounce2:
Eine Frage an die Datenbankspezies: Welche Vorgehensweise wäre die sinnvollste für eine Datenbankunabhängige Programmierung unter Delphi? Mir schwebt in etwa sowas vor: Im Code baue ich mir einen entsprechenden SQLString zusammen und übergebe diesen an eine Funktion in einer DLL. Die DLL lässt sich somit austauschen, also eine für mysql, eine für Oracle,usw. Ich kann in diesem Zusammhang dann halt nur nicht mehr auf die Datenbanksensitiven Komponenten zurückgreifen, welche ich bei großen Projekten eh in Frage stelle. Was haltet Ihr davon? Hat schon mal jemand sowas gebaut? mfg Uwe K. |
Hallo,
weiß ja nicht ob du Geldausgeben willst, wenn ja, schau dir mal ![]() Thomas |
Delphi hat alles
Die Delphi Datenzugriffsobjekte (BDE, ADO, dbExpress) erlauben genau das Gewünschte!
Leider unterstützen nicht alle Server die gleiche Syntax, deshalb muss beim Zusammenbasteln der SQL-Statements der Server-Typ beachtet werden. SQL-Links von Borland soll auch dieses Problem durch Kapselung der SQL-Aufrufe lösen. Wenn Du dbExpress (TSimpleDataset mit eingebautem Provider, d.h. nicht mehr unidirektional) benutzt, bisst Du sogar OS-unabhängig, da diese Schnittstelle auch in Kylix existiert (genauer: da kommt sie her). |
DB-unabhängig
Genau darum geht es ja!
Das ich per ADO über ODBC auf DB´s zugreifen kann ist schon klar. Ich möchte aber nicht auf ODBC treiber angewiesen sein. Ausserdem dachte ich an eine automatische Konvertierung der SQL Strings an die Gegebenheiten der jeweiligen DBMS. Ich beschränke mich ja schon auf SQL-92 und bin damit schon fast frei von Abhängikkeiten, auch wenn sich das negativ auf die Performance niederschlägt und mit wesentlich mehr Programmieraufwand verbunden ist. Die lahmen ODBC Implementationen bremsen die Software noch mehr ab. Im Programm selbst nutze ich keine Datensensitiven Elemente. Dadurch habe ich die volle Kontrolle, wann welche Daten zur Datenbank übermittelt werden. Davon ab sind die Daten in den Grids auch vollkommen anders abgelegt. Also der Link oben war schon sehr gut, aber es gibt da auch wieder himmelweite Unterschiede in der Geschwindigkeit, im Umgang mit der Schnittstelle und in der Qualität(Bugs). Wer bietet denn solche DLL´s noch an, und welche sind denn letztendlich die am weitesten verbreiteten Produkte? mfg uwe |
dbExpress
Versuche doch mal dbExpress, das kommt Deinen Wünschen wohl sehr nahe. Irgendeinen Treiber brauchst Du halt. Außerdem könntest Du mal die Artikelreihe von Cary Jensen auf dem Borland Developer Network zu ClientDataSet querlesen.
Zur weiteren Info: alle DB-Engines verwenden irgendwelche Dialekte von SQL. Gehe mal davon aus, dass Du nicht wirklich glücklich wirst, wenn Du Dich auf SQL-92 beschränkst. Weiterhin ist das Zusammenbasteln der SQL-Statements nur eine Deiner Aufgaben. Irgendwie musst Du den Befehl an die DB-Engine schicken und die Antwort (zumindestens beim SELECT) dann zurück erhalten. Natürlich kannst Du auf die Daten-Komponenten von Delphi verzichten und alles zu Fuß programmieren, aber wozu ? Wenn irgendetwas fehlt, läßt sich dies dank der Vererbung meist einfach dranstricken. dbExpress bietet vor allem deswegen Vorteile, weil 1. nicht direkt auf dem DB-Server geschrieben wird und 2. weil außer 2-3 Dateien nix gebraucht wird außer einem ordnungsgemäß installierten Client-Access auf die DB-Engine. Für einige DB erledigt das Herr Gates gleich bei der Installation des OS, ansonsten (z.B. MySQL muss halt eine Client-Installation durchgeführt werden). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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