AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere versch. Objekte mit einer DB-Verbindung auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere versch. Objekte mit einer DB-Verbindung auslesen

Ein Thema von TheMiller · begonnen am 23. Feb 2010 · letzter Beitrag vom 24. Feb 2010
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Mehrere versch. Objekte mit einer DB-Verbindung auslesen

  Alt 23. Feb 2010, 13:08
Datenbank: MySQL • Version: 5 • Zugriff über: ZeosLib
Hallo,

ich weis, es ist ein blöder Titel, aber ich weis nicht, wie ich mein Problem in der Titelzeile formulieren soll.

Ich habe das Problem, dass ich ein Objekt erstelle und mit Werten aus der DB fülle. Nun hat das Objekt eine Eigenschaft, in der ein weiteres Objekt gespeichert werden muss. Von der DB bekomme ich nur die ID (wenn ich ohne JOINs arbeite). Wenn ich dann über meine Read-Methode das zweite Objekt auslese, wird ja das vorherige ResultSet verworfen.

Aber hier erstmal meine Definitionen:

Delphi-Quellcode:
TObjekt1 = class(TObject)
private
  fEigenschaft1: String;
  fBenutzer: TBenutzer;
public
  property Eigenschaft1: String read fEigenschaft write fEigenschaft;
  property Benutzer: TBenutzer read fBenutzer write fBenutzer;
end;
Code:
Tabelle für Objekt1:
id | benutzerid | titel | text

Tabelle für Objekt2 (benutzerID)
id | benutzername | ...
Und so lese ich meine Daten aus; Die Methode "read" ist in der DB-Klasse deklariert:

Delphi-Quellcode:
procedure TPJDB.Read(DataObj: TObject)
begin
  if (DataObj is TObjekt1) then
  begin
    SelectAll([tableName]);
    while not (Eof) do
    begin
      Obj1:=TObjekt1.Create;
      Obj1.Eigenschaft1:=getString('titel');

      Benutzer:=TBenutzer.Create;
      Benutzer.UserID:=getInteger('uid');
      
      Obj1.Benutzer:=Benutzer;
      
      //Read(Obj1.Benutzer)
      //Das veranlasst das Überschreiben des aktuellen ResultSets.
      Next;
    end;
  end;
Meine Frage ist jetzt, wie ich das am "schönsten" mache. Ich könnte eine DB-Abfrage mit Joins machen, in der ich alle Daten für alle benötigten Objekte abfrage. Das hat den Nachteil, dass ich mehrere Stellen im Code ändern muss, falls sich was an der Struktur der DB ändert.

Ich könnte aber auch alle "Grunddaten" auslesen und in einer (oder mehr) Schleife(n) die Objekte über die Read-Methode auslesen. Das hat den Nachteil, dass u.U ziemlich viele DB-Anfragen gemacht werden müssen. Gut, lokal wäre das nicht so das Thema, aber via VPN dauert es halt länger. Das würde ohne Probleme gehen, aber ist das so toller Stil?

Eine letze Alternative, die ich noch sehe, ist, eine weitere DB-Connection zu erstellen und diese für die Abfrage zu benutzen.

Was empfehlt ihr mir?

Vieln Dank!
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#2

Re: Mehrere versch. Objekte mit einer DB-Verbindung auslesen

  Alt 24. Feb 2010, 08:58
Morgen!

Das Problem besteht immernoch. Hat wirklich niemand eine Idee, welche der drei genannten Wege der beste ist?

Wäre nett, wenn ihr mir helfen könntet/würdet.

Vielen Dank
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Mehrere versch. Objekte mit einer DB-Verbindung auslesen

  Alt 24. Feb 2010, 12:13
Nur mal so ein Gedanke...
Wie wäre es, wenn du einen oder auch mehrere VIEWs in der Datenbank anlegst und über diese kommunizierst.
Dann ist die Schnittstelle zu deiner Anwendung immer gleich und bei Änderungen sind eben nur die VIEWs anzupassen. Ich würde immer zu wenig Datenbankzugriffen tendieren.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Mehrere versch. Objekte mit einer DB-Verbindung auslesen

  Alt 24. Feb 2010, 12:58
Das hört sich gut an. Mit Views habe ich allerdings noch nie gearbeitet. Kannst du mir das evtl näher erklären?

Danke
  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 18:38 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