db-Zugriff bei mysqldb trennen?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

db-Zugriff bei mysqldb trennen?

Beitrag von khh »

hallo zusammen,
ich möchte aus einer Anwendung heraus mehrfach auf eine mysqldb zugreifen.
Sprich es soll möglich sein von verschiedenen Arbeitsplätzen aus auf die db und verschiedene Tabellen zuzugreifen.
Macht es Sinn, die Verbindung zur DB nach jedem Zugiff zu trennen und vor dem Zugriff wieder aufzubauen, oder ist es ausreichend mit Transaktionen zu arbeiten?
Wie würdet ihr das handeln?


Danke für eure Meinungen

Gruss Kh

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: db-Zugriff bei mysqldb trennen?

Beitrag von Socke »

hi,
Ich hab zwar noch nicht soviel prakitsche Erfahrung mit der Datenbankprogrammierung und FreePascal (oder auch Delphi) aber das ständige trennen und reconnecten ist in meinen Augen sinnlos, da eine Datenbank zumindest in den meisten Fällen - und MySQL gehört dazu - darauf ausgerichtet ist mehrere Benutzer gleichzeitig und vor allem unabhängig von einander zu bedienen.

Wenn ich mich irren sollte, bitte berichtigt mich
Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: db-Zugriff bei mysqldb trennen?

Beitrag von monta »

Socke hat recht, MySQL ist eine Multiclient-DB.

Ich würde die Verbindungen aufrecht erhalten und entsprechend mit Transaktionen arbeiten. Ich seh auch im Moment keinen Vorteil darin, weshalb man die Verbingung nach jeder Aktion trennen und ggf. wieder neu Aufbauen sollte, höchstens, wenn du nur einmal am Tag auf die DB zugreifen willst und die Verbindung dann stundenlang ohne Aktion aufrecht erhalten würde.
Johannes

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: db-Zugriff bei mysqldb trennen?

Beitrag von khh »

ich danke euch

gruss KH

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: db-Zugriff bei mysqldb trennen?

Beitrag von khh »

irgendwie stehe ich gerade auf dem Schlauch :-(
also ich öffne die Verbindung beim create des form1 mit mysql50connection.
die Verbindung soll offen bleiben.
aus dem form1 erstelle ich ein form2 und ein form3 in denen ich die verbindung nutzen will.

wioe kann ich jetzt auf die offene connection zugreifen?

uses form1 im form2 geht ja nicht:-(


Danke für eure Hilfe.

Gruss KH

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: db-Zugriff bei mysqldb trennen?

Beitrag von knight »

khh hat geschrieben: uses form1 im form2 geht ja nicht:-(
Gruss KH
Üblicherweise werden mit uses die Units und nicht die Formulare eingebunden. An deiner Stelle würden ich die Datenbank-Komponenten in ein Datenmodul packen und dann von den einzelnen Units darauf zugreifen.

knight

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: db-Zugriff bei mysqldb trennen?

Beitrag von khh »

knight hat geschrieben:
khh hat geschrieben: uses form1 im form2 geht ja nicht:-(
Gruss KH
Üblicherweise werden mit uses die Units und nicht die Formulare eingebunden. An deiner Stelle würden ich die Datenbank-Komponenten in ein Datenmodul packen und dann von den einzelnen Units darauf zugreifen.

knight
ja klar, ich hab ja die dazugehörende unit gemeint ,-)

Die Idee mit dem Datenmodul ist gut.

ich danke dir.

Gruss KH

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: db-Zugriff bei mysqldb trennen?

Beitrag von Socke »

knight hat geschrieben:
khh hat geschrieben: uses form1 im form2 geht ja nicht:-(
Gruss KH
Üblicherweise werden mit uses die Units und nicht die Formulare eingebunden. An deiner Stelle würden ich die Datenbank-Komponenten in ein Datenmodul packen und dann von den einzelnen Units darauf zugreifen.
Naja, wenn ich von Form1 aus die Form2 anzeigen will, muss ich ja irgendwie darauf zugreifen. Also brauche ich in uForm1.pp (da ist Form1 drinnnen) eine uses-Referrenz auf uForm2.pp (da ist Form2 drinnen). Da aber Rekursive Abhängigkeiten böse sind und deswegen nicht funktionieren ist eine zusätzliche Unit die Best Lösung. Müssen troztdem zwei Units aufeinander zugreiffen gibt es noch folgende Lösung:

Code: Alles auswählen

unit uForm1;
interface
uses SysUtils{...};
type
  TForm1 = class(TForm)
  {...}
  public
    function AClass: TObjectClass;
  end;
implementation
uses Graphics{...};
procedure TForm1.AClass: TObjectClass;
begin
  Result := Graphics.TBitmap.ClassType; {oder so ähnlich}
end;
end.
 
In die Uses-Klaus im Interface-Abschnitt kommen nur die Units hinein, die für das Interface gebraucht werden (also Typen, die in Klassenreferrenzen gebraucht werden) und in die Uses-Klausel im Implementations-Abschnitt diejenigen, die für die Immplementation wichtig sind. Wenn also eine Klasse eine Funktion aus der Unit "Graphics" aufruft, aber keinen Typ (bspw. TBitmap) daraus im interface-Teil referrenziert, reicht es diese im implementation-Abschnitt anzugeben.
Dann ist es auch möglich von uForm2.pp auf uForm1.pp zuzugreifen, solange in uForm2.pp im Interface-Abschnitt nichts aus uFrom1.pp vorkommt.

Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Re: db-Zugriff bei mysqldb trennen?

Beitrag von khh »

ich danke euch



Gruss Kh

Antworten