Frage

Was ist besser (und aus welchen Gründen) zu verwenden, um MS SQL, Oracle oder Firebird aus einem Delphi Win32-Anwendung zu verbinden - ADO oder DBX (Database Express)

?

Beide ermöglichen es Ihnen, den großen Datenbanken zu verbinden. Ich mag die Art und Weise ADO macht alles mit einer Verbindungszeichenfolge ändern und die Tatsache, dass ADO und die Treiber in Windows enthalten sind, um nichts extra zu implementieren (wie es scheint, korrigieren Sie mich, wenn ich falsch liege).

DBX ist auch flexibel und kann ich die Treiber in meiner app kompilieren, kann ich nicht?

Ich bin wirklich daran interessiert, eine Hand zu haben, wenn möglich, mit der Möglichkeit, Datenbanken auf die IT-Abteilung / preferences abhängig variieren des Kunden.

Aber das ist einfacher zu programmieren, zu besseren Ergebnissen führt, nutzt Speicher am effizientesten? Alle anderen Dinge zu unterscheiden, sie auf?

Danke, Richard

War es hilfreich?

Lösung

ADO ist einfach zu bedienen und es ist, müssen Sie nur darauf achten müssen die Korrespondenz-Client-Treiber in der Client-Seite installiert werden.

Ich fand DBX flexibler und es besser ist, in IDE und anderen Technologien wie DataSnap integriert.

Für den gleichen Zweck als du, habe ich DBX mit Third Party-Treiber von DevArt verwendet. Sie können die Treiber mit Ihrer Anwendung kompilieren, wenn Sie die Treiber Quellen gekauft werden können.

Andere Tipps

Am Anfang von Delphi, lobten die Menschen die Multi-DBMS-Unterstützung in Delphi. Jeder liebte die BDE (denn das ist der einzige Weg war, das zu tun).

Aber wenn bei Kunden über mehr als die letzten zehn Jahre sucht, ich habe in ihren Anwendungen eine stetige Abnahme von Multi-DBMS-Unterstützung gesehen.

Die Kosten für mehrere DBMS von einer Anwendung zur Unterstützung hoch ist.

Nicht nur, weil Sie Kenntnis von jedem DBMS haben, sondern auch, weil jedes DBMS seine eigene Reihe von Eigentümlichkeiten hat, wo Sie in Ihrer Datenzugriffsschicht anpassen. Dazu zählt nicht nur Unterschiede in der Syntax und die zugrunde liegende Datentypen, sondern auch Optimierungsstrategien.

Auch arbeiten einige DBMS besser mit ADO, einige besser mit einer direkten Verbindung (wie alle zusammen, um Ihre Oracle-Client-Skipping).

Schließlich alle Testen der Kombinationen Ihrer Software mit mehreren DBMS-Systemen ist sehr intensiv.

Ich habe in einigen Projekten beteiligt, wo wir den DBMS-Backend ändern mussten und / oder die Datenzugriffstechnologie (von d BDE zu DBX oder von DBX auf eine direkte Verbindung). das Backend zu ändern war immer viel mehr als schmerzhaft die Datenzugriffstechnologie zu verändern. Multi-Tier-Ansätze machte sie etwas leichter, aber erhöht die Freiheitsgrade und dafür die Testaufwände.

Einige der Produkte, die ich sehe, tun, dass die Unterstützung Multi-DBMS in vertikale Marktanwendungen sind, wo bereits die Endkunden ihre eigenen DBMS-Infrastruktur hat und die Anwendung muss, dass anzupassen. Zum Beispiel in der niederländischen Regierungsbereichen hat Oracle wirklich stark, aber SQL Server ist auch durchaus eine Benutzerbasis festgelegt.

Sie müssen also darüber nachdenken, was Kombinationen von DBMS Sie unterstützen wollen, nicht nur in Bezug auf Funktionalität, sondern auch in Bezug auf die Kosten.

Wenn Sie einen DBMS-Stick, dann macht es keinen Sinn für eine generische Datenzugriffsschicht zu gehen wie BDE, DBX oder ADO: es zahlt wie möglich zu tun, eine Verbindung als direkt aus. Meine Erfahrung hat mich gelehrt, dass diese Kombinationen gut funktionieren:

Hope dies gibt Ihnen einen Einblick in die Möglichkeiten und Grenzen von mehreren DBMS von Delphi-Anwendungen zu unterstützen.

- jeroen

Generell gilt: jede Schicht der Komponenten wird möglicherweise eine zusätzliche Schicht von Bugs hinzufügen. ADO und DBX Beide sind Bestandteil Wrapper um Standard-Datenbank-Funktionalität, so sind sie beide gleich stark. So sollte die richtige Wahl von anderen Faktoren beruhen, wie die Datenbanken, die Sie verwenden möchten. Wenn Sie MS-Access oder SQL Server verbinden wollen, würde ADO die bessere Wahl sein, da es für diese Datenbanken nativeren ist. Aber Firebird und Oracle ist mehr nativen für die DBX-Komponenten.

Ich persönlich neige dazu, die rohe ADO-API, obwohl zu verwenden. Dann wieder, ich weiß nicht datensensitiven Komponenten in meinen Projekten verwenden. Es ist weniger RAD, ich weiß. Aber ich muß oft auf diese Weise arbeiten, weil ich in der Regel Client / Server-Anwendungen mit mehreren Schichten zwischen der Datenbank und dem GUI zu schreiben, damit die Dinge komplizierter zu machen.

Meine zwei Cents. DBX ist deutlich schneller (sowohl auf Oracle und SQL), und deutlich mehr pingelig und schwieriger zu implementieren

Wenn die Leistung ein Faktor ist, würde ich mit DBX gehen. Ansonsten würde ich nur ADO der Einfachheit halber verwendet werden.

Wie schon andere gesagt haben, kann DBX hat die Kante in roher Leistung in bestimmten Fällen oder unter bestimmten Umständen aber ADO ist die Grundlage für eine sehr große Anzahl von Anwendungen in der Welt so, obwohl die Leistung von ADO sein kann relativ ärmer, eindeutig das bedeutet nicht, „inakzeptabel“ schlecht.

Für mich selbst und informiert von den großen Projekten, die ich gearbeitet habe, das größte „Problem“ mit DBX ist, dass, egal wie gut sie auch sein mag, es ist eine Key-Infrastruktur-Technologie durch eine Sprache / tools Unternehmen zur Verfügung gestellt ist.

Jeder, die Anwendungen auf der früheren BDE-Technologie wird die Störung verursacht auszusagen, wenn diese Technologie ist veraltet und nicht mehr unterstützt. Während keine Technologie von deprecation durch seinen Provider immun ist, hat ADO deutlich die Kante, wenn sie über die Technologie-Anbieter für die Unterstützung der Industrie kommt selbst.

Aus diesem Grund habe ich mich jetzt immer ADO verwenden. die Verbindungszeichenfolge nur die Änderung ist nicht immer das einzige, was zu befürchten, wenn sie von einem Datenbanktyp zum anderen jedoch ändern. Stored Procedure Call Syntax kann von einem ADO-Provider zu einem anderen variieren, und Sie immer noch die SQL-Syntax sehen müssen Sie verwenden, wenn Sie gegen mehrere verschiedene SQL-Motoren bereitstellen möchten, wo die SQL-Unterstützung von auf zum anderen variieren kann.

Um diese Probleme zu mildern ich meine eigene Kapselung des ADO-Objektmodell verwenden. Diese Kapselung nicht das Objektmodell in etwas mutieren nicht versuchen, die nicht ADO nicht ähnelt, es macht einfach jene Teile von ADO, die ich direkt in einer Object freundlich (und „Typ“ safe) Form (zB Aufzählungstypen verwenden müssen und wenn nicht Hunderte von integer-Konstanten Sätze für Konstanten und Flags usw., und nicht nur Noten).

Meine Verkapselung kümmert sich auch um einige der kleineren Variationen in verschiedenen Anbieter Verhaltensweisen / Anforderungen, wie die zuvor in Stored Procedure Call Syntax genannten Unterschiede.

Ich soll auch auf ein anderes Plakat, das ähnlich sagen, auch ich lange nicht mehr vor verwendet „Daten bewusst Kontrollen“, die diesen Ansatz eröffnet. Wenn Sie benötigen oder wünschen Datensensitive Steuerelemente verwenden und wollen ADO verwenden, dann können Sie nicht direkt verwenden ADO und muss stattdessen eine Verkapselung finden, die ADO durch die VCL-Datensatz Modell verfügbar macht.

ADO ist Microsoft Welt

DBX wurde am Anfang (Delphi 6) zum plattformübergreifenden und Kylix

geschaffen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top