AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank-Hersteller neutral programmieren mit ADO
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank-Hersteller neutral programmieren mit ADO

Offene Frage von "berens"
Ein Thema von berens · begonnen am 25. Sep 2008 · letzter Beitrag vom 26. Sep 2008
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 12:49
Datenbank: Möglichst Jede • Zugriff über: ADO
Hi!

Ich würde gerne mein nächstes Projekt so entwickeln, dass es mit jeder Datenbank zurecht kommt, die mit ODBC / OLEDB / ADO angesprochen werden kann (z.B. MSSQL, MYSQL, Access, etc., keine Exoten).

Bisher klappt das ja generell, dass ich mich mit dem passenden ConnectionString auf die Datenbanken verbinde, soweit kein Problem.

- Wenn ich aber z.B. mit einer Access-Datenbank arbeite, klappen manche Befehle nicht, die laut SQL-Standard 1992 funktionieren sollen.
- SELECT "Name" FROM Personen geht nicht bei allen Datenbanken (" wird nciht unterstützt)
- SELECT Name FROM [Personen] geht nicht bei allen Datenbanken ( [ ] werden nicht unterstützt

etc. Das sind so die kleinen Probleme, weshalb mein Programm noch nicht ausserhalb von Access benutzt werden kann.

Gibt es nun eine Möglichkeit, wie ich mit TAdoDataset oder wie auch immer mit einem SQL-Befehl oder Filter von allen Datenbanken die korrekten Datensätze bekomme?

Hat jeman deinen Link oder weiterführende Infos zum dem Thema Datenbankhersteller-unabhängige Programmierung?

Danke im Vorraus!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 13:40
Hallo,
Zitat:
Ist datenbankherstellerunabhängige Programmierung möglich?
klare Antwort: Nein

SQL ist standardisiert: Soweit die Theorie.

Praktisch gibt es dort teils gigantische Unterschiede.

Mir ist bis jetzt nur ein Mittel eingefallen:

SQL's in eine Datenbanktabelle schreiben und aus dieser Tabelle in die Query laden und ggfls. über die Parameter mit Werten versehen.

Wenn Du nun die Datenbank wechselst, musst Du nur die nicht kompatiblen SQL's in der Datenbanktabelle ändern, brauchst aber nicht an Dein Programm. Auch eine eventuell erforderliche Fehlerkorrektur an SQL's führt nicht zwingend zu einer Änderung am Programm.

Das einzige feste SQL, das Du in Deinem Programm brauchst, ist das zum Auslesen der SQL's. Dies sollte aber datenbankübegreifend funktionieren.

Mit dieser Methode kannst Du ein Programm bei verschiedenen Kunden gegen unterschiedliche Datenbanken laufen lassen, ohne eine entsprechende Anzahl von Progammversionen pflegen zu müssen.

Stephan
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 13:43
Jetzt kann ich wieder meinen Liebling Anbringen: Bridge-Pattern
In der konkrenten Implementierungsklasse nimmst du für Access und MS SQL Server ADO, für MySQL und Oracle die Komponenten von DevArt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 13:43
Hast Du es schon mal mit
SELECT Name FROM Personen probiert?

Wenn Du Hersteller neutral programmieren willst, musst Du Dich auf einfachste SQL Abfragen beschränken, Sichten und StoredProcedures meiden etc. Also sehr aufwändig programmieren. An Deiner Stelle würde ich mich daher auf MySQL und/oder MSSQL konzentieren. Access würde ich vernachlässigen, da das Teil IMHO eine Krankheit ist und kein Datenbanksystem.
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 13:48
SELECT Name FROM Personen geht leider nicht immer, weil z.B. Tabellennamen unter Umständen Schlüsselwörter der einzelnen Datenbanksysteme sein können. Da bekommt man dann z.B. ne Meldung wie "Ungültiger SQL-Befehl "Name" oder sowas. Leider kann ich die Spaltennamen nicht immer selbst bestimmen :/

Access nur deswegen, weil das im Moment die beste Möglichkeit für mich ist, auf einem lokalen System ohne DB-Server zu Arbeiten. Und ich brauche nur die .mdb Datei, wenn ich dem Kunden eine neue DB zusende...


Eine TAdoTable repräsentiert doch ansich gut jeweils eine Tabelle aus der Datenbank. Ist es möglich, TAdoTable übergreifen eine (z.B. Inner Join) Abfrage zu machen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 17:47
Dann muss aber eine entsprechende JET installiert sein. Ich würde besser FireBid embedded oder SqLite verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 25. Sep 2008, 17:50
Zitat von berens:
SELECT Name FROM Personen geht leider nicht immer, weil z.B. Tabellennamen unter Umständen Schlüsselwörter der einzelnen Datenbanksysteme sein können. Da bekommt man dann z.B. ne Meldung wie "Ungültiger SQL-Befehl "Name" oder sowas. Leider kann ich die Spaltennamen nicht immer selbst bestimmen :/
Deshalb Bridge-Pattern. Damit kannst du Tabellennamen entsprechen Quoten.

Zitat von berens:
Eine TAdoTable repräsentiert doch ansich gut jeweils eine Tabelle aus der Datenbank. Ist es möglich, TAdoTable übergreifen eine (z.B. Inner Join) Abfrage zu machen?
Dafür nimmt man TADOQuery oder TADODataset.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
aladin60

Registriert seit: 12. Mär 2008
Ort: Sachsen-Anhalt
45 Beiträge
 
Delphi 2006 Personal
 
#8

Re: Datenbank-Hersteller neutral programmieren mit ADO

  Alt 26. Sep 2008, 17:01
Zitat von berens:
SELECT Name FROM Personen geht leider nicht immer, weil z.B. Tabellennamen unter Umständen Schlüsselwörter der einzelnen Datenbanksysteme sein können. Da bekommt man dann z.B. ne Meldung wie "Ungültiger SQL-Befehl "Name" oder sowas. Leider kann ich die Spaltennamen nicht immer selbst bestimmen :/

Access nur deswegen, weil das im Moment die beste Möglichkeit für mich ist, auf einem lokalen System ohne DB-Server zu Arbeiten. Und ich brauche nur die .mdb Datei, wenn ich dem Kunden eine neue DB zusende...


Eine TAdoTable repräsentiert doch ansich gut jeweils eine Tabelle aus der Datenbank. Ist es möglich, TAdoTable übergreifen eine (z.B. Inner Join) Abfrage zu machen?
Vorschlag: nimm z.B. MSSQL, mache von der neuen DB ein Backup (SQL-Befehl) und integriere in Dein Programm das RESTORE. Dann kann weiterhin dem Kunden "eine neue Datenbank geliefert" werden.

Bernd.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 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