AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten aus Datenbank in Speicher halten?!
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aus Datenbank in Speicher halten?!

Ein Thema von hans ditter · begonnen am 3. Jan 2012 · letzter Beitrag vom 12. Jan 2012
Antwort Antwort
Seite 1 von 3  1 23      
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#1

Daten aus Datenbank in Speicher halten?!

  Alt 3. Jan 2012, 00:40
Datenbank: SQLite • Version: 3 • Zugriff über: Delphikomponenten
Hallo an alle!

Hoffentlich seid ihr gut durch die Feiertage gekommen!

Ich habe mich in den Ferien mit Datenbanken beschäftigt und vor allem damit, wie ich die in eine Delphi-Anwendung einbinde.
Nun hab ich ein Projekt erstellt, dass meine DVDs verwaltet. Hierzu habe ich unter anderem die Tabelle (Tbl) 'Movies' erstellt, die die Informationen zu Titel, Regisseur, Schauspieler, Genre etc. aufnimmt.

Nun hab ich in der Anwendung eine Eingabemaske entworfen, die aus Edits und Memos besteht, die also jeweils nur einen Datensatz anzeigt oder einen neuen aufnehmen kann.

Nun hab ich mich gefragt, wie ich die Daten nun am Besten verarbeite, z.B. beim Navigieren. Im Moment ist es so, dass ich für einen Datensatz zurück die komplette Tabelle ('SELECT * FROM movies;') aus der DB hole und den n-ten Datensatz heraushole (n hab ich mir in einer Variable gemerkt). Danach wird die Tabelle wieder geschlossen.

Diese Art halte ich aus 2 Gründen für ungünstig: 1. es ist extrem umständlich und 2. (wichtiger) wird die Datenbank laufende Meter wieder neu geöffnet, eine neue Abfrage Tabelle erzeugt und dann wieder geschlossen.

Also dachte ich mir, kannste ja auch die ganze Tabelle in ein Programminternes Array speichern und somit immer zur Verfügung haben. Doch da hab ich mir gedacht, dass das ja enorm viel an Ressourcen verbraucht, vor allem wenn es an die tausende Datensätze geht, und es bei Multi-User-Zugriffen auch ein Problem der Aktualität geben könnte.

Nicht alle Dinge (z.B. Multi-User) treffen auf mein Projekt zu, sind ja aber wann anders vielleicht interessant. Also meine allgemeine Frage: Wie holt man sich Daten aus einer Datenbank um sie anzuzeigen, in ihnen zu navigieren und sie zu verändern, ohne z.B. ZEOS zu verwenden.

Die Frage ist halt nich auf mein Projekt speziell bezogen, sondern mehr generell, denn vlt kommt in Zukunft ja mal ein Projekt mit Multi-User und tausenden Datensätzen... man kann ja nie wissen!

LG; hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

AW: Daten aus Datenbank in Speicher halten?!

  Alt 3. Jan 2012, 06:38
Hallo,

Ich schreibe mir dazu Klassen und eine TObjectList. Beim ersten Mal aufrufen, werden alle Datensätze in die TObjectList geladen. Nachher im Programm, navigiere ich nur durch die Objektlist und reagiere auf Veränderungen. Wird eine Veränderung vom Anwender durchgeführt, lade ich nochmal alle Datensätze neu in die ObjectList.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Daten aus Datenbank in Speicher halten?!

  Alt 3. Jan 2012, 07:37
Das ist doch genau das was Datasets (zumindest Clientseitige) ohnehin tun ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Daten aus Datenbank in Speicher halten?!

  Alt 3. Jan 2012, 08:27
Für eine Tabelle sollten datensensitive Steuerelemente genau das Richtige sein.

1. Tabellenkomponente auf die Form schmeissen.
2. Mit einer TDatasource-Komponente verknüpfen.
3. TDBGrid auf die Form und mit der TDatasource verknüpfen.
4. Dann noch ein paar TDBEdits und TDBMemos und mit TDatasource verknüpfen.

Starten und staunen, das man so ein Projekt ganz ohne Code hinbekommt.
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 12:11
Naja, dass es mit datensensitiven Komponenten geht war mir klar. Es ging mir vor allem um die generelle Umsetzung, wenn man eben keine entsprechenden Komponenten nutzen will.

LG; hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 12:43
Hier hatte ich ähnliche Fragen angesprochen: http://www.delphipraxis.net/165090-g...nkprojekt.html
Es ging dann recht munter durcheinander. Es gibt eben unterschiedliche Ansätze, die unterschiedliche Vor- und Nachteile haben und nicht für jedes Projekt gleich bewertet werden können.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 12:49
... Im Moment ist es so, dass ich für einen Datensatz zurück die komplette Tabelle ('SELECT * FROM movies;') aus der DB hole und den n-ten Datensatz heraushole (n hab ich mir in einer Variable gemerkt). Danach wird die Tabelle wieder geschlossen...
Warum holst Du denn die komplette Tabelle wenn Du nur einen bestimmten Datensatz haben möchtest?
Das macht das doch unglaublich langsam. Schliessen musst Du die Verbindung zur Datenbank ja auch nicht.
Beim Programmstart mit der DB verbinden und beim beenden schliessen.
Dazichen immer nur ein SELECT ... das mit Parametern aufgerufen wird.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
hans ditter

Registriert seit: 25. Jun 2010
Ort: Niedersachsen
263 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 15:47
@Sharky: Das war letztlich auch das, was ich problematisch gesehen hab. Die beste Lösung sieht für mich im Moment wie die Antwort von RWarnecke mit Klassen und ObjectList, obwohl mir die Umsetzung noch nicht ganz klar ist...

Was hat die Klasse zu tun? Holt die die Daten aus der DB oder nimmt sie die Daten eines Datensatzes auf oder wie? Und was speicher ich in der ObjectList? Pointer auf die Klasse? Oder irgendwas anderes?

LG; hans ditter
RudiRüsselSeineSocketKomponente - SirRufo (--> Chat mit PM)

Delphi Programming is the best one!
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 15:58
Schau Dir mal z.B. dORM an, dann musst Du das Rad nicht unbedingt neu erfinden.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Daten aus Datenbank in Speicher halten?!

  Alt 4. Jan 2012, 18:00
Lehn Dich doch mal zurück und frag Dich was Du willst.
Wenn Du z.B einen Film suchst, dann fragst Du nach "Doktor Schiwago". Dann interessiert Dich "stirb langsam III" nicht. Es sei denn Du möchtest eine Liste aller Filme (mit Bruce Willis) haben.
Wenn Du diese Anforderungen kennst, - und erst dann!!- solltest Du daran gehen die notwendige Oberfläche zu schreiben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 02:27 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