AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankkomponenten - Verbindung immer offen!
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankkomponenten - Verbindung immer offen!

Ein Thema von Mavarik · begonnen am 31. Mai 2007 · letzter Beitrag vom 1. Jun 2007
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#1

Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 14:36
Datenbank: MySQL • Version: 5.0 • Zugriff über: SciBit Komponenten Direkt
Hallo Zusammen!

Ich habe bisher immer mit meiner eigenen ISAM und eigenen ISAMEdit auf Datenbanken zugegriffen..

Ein geladener Datensatz wurde in die Edit/Maskedit/Comboboxen usw. übertragen und war dann
statisch verfügbar, auch wenn die Datenbank schon lange geschlossen war...

Das geht ja leider nicht mit den DBEdit's usw... Auch muss eine Datenbank immer im Edit-Modus stehen
damit die Felder bearbeitet werden können...

Ein Kundenauftrag erfordert jetzt leider diese Art des Datenzugriffes... Da es mein ersten Programm
mit permanent offenen Datenbanken ist, habe ich einige Fragen:

Wann öffnent und schließt Ihr die Datenbank? Besonders, wenn zwischen mehreren Programmteilen hin und
her gesprungen werden kann? Beispiel: Adresseingabe -> Textverarbeitung -> Kalender -> Adresseingaben
Der Datensatz sollte ja erhalten bleiben...

Benutzt Ihr eine 2. Temp-Verbindung für Suchfunktionen z.B. um eine andere Adresse in einen Brief einzufügen,
wenn eine Adresse schon im Edit-Modus ist?

Öffnet und schließt Ihr "nur" die Datenbank oder löscht und Connected Ihr auch immer den Server?

Wie sieht es aus bei Multiuser Betrieb? Beim speichern einer Adresse, sollte ja überprüft werden,
ob ein anderer Arbeitsplatz die Adresse ggf. in der Zwischenzeit geändert hat. Hier wäre ja wieder eine
Temp-Verbindung nötig?


Es geht mit nicht darum, dass ich nicht weiss, wie es geht, sondern "lediglich" um Tipps das ganze Praktikabel
zu lösen...

Grüsse Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 14:38
Warum ist die geöffnete Verbindung ein Problem?
Schon eine Mehr-Ebenen-Architektur gedacht (Multi-Tier)?
Markus Kinzler
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 14:48
Zitat von mkinzler:
Warum ist die geöffnete Verbindung ein Problem?
Schon eine Mehr-Ebenen-Architektur gedacht (Multi-Tier)?
Ganz genau.
IMHO ab D6 ist das ClientdataSet bereits in der Professional enthalten.
Und IMHO sollten bei BDS2006 Pro die Client komponenten für Data Snap enthalten sein.
Es sollte also eine BDS Enterprise reichen um den Server zu schreiben, aber Pro SKUs sind ausreichend für den Client.
Vorausgesetzt dass keine Zusatzkomponenten wie kbmMW oder RemObjects SDK/Data Abstract benutzt werden sollen. (Wobei beide Systeme es seeehr viel einfacher machen wirklich sichere, internet fähige Application server zu bauen )
Selbst in simplen Client/Server Designs lässt sich das ClientDataset sehr einfach in Verbindung mit dbExpress benutzen. (Auch in der Pro)
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 14:55
Hallo!

Zitat von mkinzler:
Warum ist die geöffnete Verbindung ein Problem?
Nein eigentlich nicht... Ich hatte nur ein Timeout-Problem mit dem SQL Server, aber das habe ich gelößt...
Es ist nur ungewohnt immer nur einen Datensatz bearbeiten zu können...

Sonst habe ich eben
Delphi-Quellcode:
  Blockread(f,Alter_datensatz,Sizeof(Adresse));
  Blockread(f,Neuer_datensatz,Sizeof(Adresse));
Das war irgendwie einfacher...

Zitat von mkinzler:
Schon eine Mehr-Ebenen-Architektur gedacht (Multi-Tier)?
Kannst Du den Vorteil bzw. das Verfahren in 3 Sätzen erläutern?

Frank
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 15:32
Mag sein, dass ich so kurz vor Feierabend das Problem nicht so ganz richtig verstanden habe, falls dem so ist: ignoriert meine Antwort

Ich habe bei mir in der Applikation außer DBGrids keine Datensensitiven Felder, das Füllen der entsprechenden Eingabemasken mache ich per Hand und auch das Schreiben in die Datenbank wird von Hand erledigt. Damit können bei mir die Datenbanken im Hintergrund ruhig geschlossen werden, die entsprechenden Informationen würden immer noch angezeigt. Zudem habe ich für jedes Fenster eine (oder ggf mehrere) eigene Instanz der notwendigen Datenmodule. D.h. meine Such-Fenster sind vollkommen unabhängig von den Eingabe-Fenstern. Soll ein entsprechender Datensatz aus der Suche bearbeitet werden, wird das Eingabe-Fenster geöffnet, die entsprechenden Datenbanken (TTable.GotoCurrent) und laufen von dann an wieder unabhängig voneinander.

Die einzigen Datenbank-Elemente die global für alle Tabellen sind, sind bei mir die Connections zur Datenbank. Diese sind auch nicht in den Datenmodulen hinterlegt, sondern in einem global verfügbaren Datenmodul. Die anderen Datenmodule greifen dann auf dieses Datenmodul zu. Damit halte ich die Anzahl der Connections klein, spare die Zeit für den Verbindungsaufbau (geschieht beim Start der Applikation und endet erst mit Beenden der Applikation).

Achso: verwende die Komponenten und Datenbank-Server von Advantage Database Server. Dort sind Connections und Tables bzw. Querys getrennte Komponenten)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 16:37
Zitat von hsg:
Ich habe bei mir in der Applikation außer DBGrids keine Datensensitiven Felder, das Füllen der entsprechenden Eingabemasken mache ich per Hand und auch das Schreiben in die Datenbank wird von Hand erledigt. Damit können bei mir die Datenbanken im Hintergrund ruhig geschlossen werden, die entsprechenden Informationen würden immer noch angezeigt.
Ja so habe ich es früher auch gemacht...

Das war nicht die Frage, trotzdem Danke

Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 31. Mai 2007, 16:52
Zitat:
Kannst Du den Vorteil bzw. das Verfahren in 3 Sätzen erläutern?
Der Vorteil von Middleware ist das keine direkte Verbindung des Client zum Server bestehen muß. Der Client puffert dann den Inhalt und stellt bei Bedarf die Verbindung wieder her. Es können so auch mehr virtuelle Verbindungen als physikalische aufgebaut werden. Verbindungspooling
Markus Kinzler
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#8

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 1. Jun 2007, 07:41
Zitat von mkinzler:
Zitat:
Kannst Du den Vorteil bzw. das Verfahren in 3 Sätzen erläutern?
Der Vorteil von Middleware ist das keine direkte Verbindung des Client zum Server bestehen muß. Der Client puffert dann den Inhalt und stellt bei Bedarf die Verbindung wieder her. Es können so auch mehr virtuelle Verbindungen als physikalische aufgebaut werden. Verbindungspooling
Mit Server ist der DB-Server gemeint, die Verbindung zum Midas-Appserver, der die Zwischenschicht darstellt, bleibt natürlich bestehen...

Für die "normalen" zweischichtigen Anwendungen nutze ich übrigens immer die Simpledatasets, die Clientdataset, Datasetprovider und SQLDataset kapseln.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 1. Jun 2007, 12:04
Hallo!

Ja ok aber darum geht es doch nicht...

Ob ich zum "zwischen" Server oder direkt zum MySQL Server verbinde macht für mich keinen Unterschied,
abgesehen davon, dass ich noch einen Vermittlungsstelle habe, die wieder Rechenzeit benötigt...

Es ging mir doch um mein Lokales Programm...

Grüsse Frank
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#10

Re: Datenbankkomponenten - Verbindung immer offen!

  Alt 1. Jun 2007, 14:02
Da habe ich mich ungeschickt ausgedrückt...

Sobald Daten in einem Clientdataset oder in einem Simpledataset enthalten sind, kann man die Connection schliessen und trotzdem noch mit den Daten arbeiten (z.b. anzeigen, ändern, einfügen und löschen).
Um die vorgenommenen Änderungen dann wieder in die DB eintragen zu lassen, ruft man die Methode ApplyUpdates auf, in der dann bei Bedarf die Connection wiederhergestellt wird und die Änderungen übernommen werden.

Cu,
Udontknow
  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 16:21 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