![]() |
Datenbank: MySQL und/oder Firebird • Version: 5.0 / 2.1 • Zugriff über: verschiedene Komponenten
[Diskussion] Effektivste Methode Daten aus DB ins Programm
Hallo zusammen,
da ich gerade am planen bin, eine größere Datenbankanwendung zu schreiben, wollte ich mal fragen welche Methoden und Varianten die effektivste ist. Die Möglichkeiten kenne ich : 1.) Ich benutze derzeit für mein Programm Code-Orakel eine einfache Query. In der Query setze ich einen SQL-Befehl ab und hole mir dann über FieldByName oder Fields[x] die Daten aus der SQL-Abfrage. Beispiel:
Delphi-Quellcode:
2.) Die Daten über Table und den DB-Komponenten (z.B. TDBEdit) zu holen und anzuzeigen. Diese finde ich aber etwas umständlich und vielleicht auch nicht ganz so flexibel wie die über die Query.
with Query do
begin SQL.Clear; SQL.Text := 'Select * From tabelle'; Open; Active := true; while not eof do begin Memo1.Lines.Add(FieldByName('Name').AsString); Next; End; Active := false; Close; end; 3.) Diese Möglichkeit kenne ich nur von hören sagen und zwar die Daten aus der Datenbank holen und in eine Klasse oder ein Rekord schreiben. Wenn dieses geschehen ist, die Felder (z.B Labels oder Edit-Felder) mit den Werten aus der Klasse oder dem Record füllen. Jetzt stellen sich mir drei Fragen : a.) Welche der drei Möglichkeiten ist die effektivste ? (Vor- und Nachteile) b.) Wie würde die dritte Möglichkeit funktionieren und ablaufen (Ablaufplan und/oder Sourcecodebeispiel) c.) oder gibt es noch eine andere Möglichkeit die Daten aus einer Datenbank in die Masken des Programms zu schreiben ? |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Optimal ist die Verwendung von Stored Procedures die dann einfach aufgerufen wird.
Die zweitbeste Möglichkeit ist die Verwendung von prepared Statements:
Delphi-Quellcode:
Syntax (Methodennamen) unterscheiden sich je nach verwendeter nativer Zugriffskomponente etwas.
myQuery.SQL.Add('INSERT INTO MyTABLE(Feld1, Feld2) VALUES(:Feld1, :Feld2)');
myQuery.Prepare; for i := 0 to Datensatzcount begin myquery.ParamByName('Feld1').AsString := Datensatz[i].Feld1; myquery.ParamByName('Feld2').AsString := Datensatz[i].Feld2; myquery.ExecSQL; end; myQuery.UnPrepare; |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Nur mal eine Frage:
Wieso steht eine Klasse zu erstellen überhaupt in der Auswahl? |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Zitat:
|
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Die Nutzung einer Business/Daten-Logik (also Trennung von Daten und GUI) ist für den Entwickler sehr angenehm.
Ich will jetzt nicht die vielen Vorteile aufzählen, weil du nach der Effektivität gefragt hast: Wenn du so eine Zwischenschicht einziehst, leidet die Performance. Nicht viel; eben je nach Implementation. Die Frage ist: Bist du auf Effektivität angewiesen oder kannst du eine wenig Verlust in Kauf nehmen? Wenn ja dann bau dir unbedingt so eine Logik-Schicht dazwischen. Wenn du später mal was ändern/hinzufügen willst, freust du dir ein 2. Loch in den Hintern weil es so einfach geht. (Das ist meine Erfahrung.) |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Ja, ein Layer für die Persistenz ist angenehm wenn man es hat, und viel arbeit es nach zu rüsten.
Dann wäre es noch sinnvoll die Datenzugriffskomponenten nicht direkt zu verwenden sondern den Umweg über eine Fassade zu gehen. Das macht den Code auch dann noch leicht pflegbar wenn sich die Funktionalität der Komponenten ändern oder sogar andere Komponenten genutzt werden müssen. Immer unter der Vorraussetzung das man auf so proprietären Unfug wie Stored Procedures verzichtet. Wenn es allerdings um reine Performance geht sind Stored Procedures die erste Wahl... ...du musst dir halt nur die Arbeit auf jedem SQL-Server von neuem machen. |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Zitat:
Da ich auch mit dem Gedanken spiele es für mehrere Datenbanksysteme das Programm zu Verfügung zu stellen würde sich ja die Trennung von Daten und GUI anbieten. Wie seht Ihr das ? Was habt Ihr dazu für eine Meinung ? Wie könnte denn ein Aufbau einer Business/Daten-Logik aussehen ? Benutze ich dafür Records, Klassen oder Arrays oder was ? |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Zitat:
Das Einzige was der Anwendungsentwickler machen muss ist zwei Methoden implementieren, die die schönen Namen ObjektInMaske und MaskeInObjekt heißen. Die Namen dürften selbsterklärend sein. Vor längerer Zeit habe ich mal versucht, sowas in Delphi zu realisieren. Es geht (weitgehend), ist aber aus Zeitgründen nie bis zur "Serienreife" gekommen. Zitat:
|
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
[quote="RWarnecke"]
Zitat:
![]() Ich habe die dort erwähnte Möglichkeit (Post #11) für mich vereinfacht und versuche nun auf dieser Basis etwas zustande zu bekommen. |
Re: [Diskussion] Effektivste Methode Daten aus DB ins Progra
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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