Lazarus und Datenbankzugriff
-
- Beiträge: 64
- Registriert: 31.12.2007 18:48:39
Lazarus und Datenbankzugriff
Werte Debiangemeinde,
eine kurze und konkrete Frage:
Verwendet Ihr beim Zugriff auf die Datenbank applikationsweit eine TSQLTransaction, die allen TSQLQueries zugewiesen wird, oder hat jede TSQLQuery ihre eigene TSQLTransaction?
Warum frage ich? Bekomme hin und wieder die Meldung: "Cannot assign transaction while old transaction active!"
Vielen Dank im Voraus.
eine kurze und konkrete Frage:
Verwendet Ihr beim Zugriff auf die Datenbank applikationsweit eine TSQLTransaction, die allen TSQLQueries zugewiesen wird, oder hat jede TSQLQuery ihre eigene TSQLTransaction?
Warum frage ich? Bekomme hin und wieder die Meldung: "Cannot assign transaction while old transaction active!"
Vielen Dank im Voraus.
Re: Lazarus und Datenbankzugriff
Hi,
ich kenne zwar lazarus konkret nicht, aber das scheint mir in diesem Fall auch nicht so wichtig.
Ueblicherweise hat man in einer Connection immer nur eine Transaktion. Ob man in Lazarus so ein Transaktion Objekt wiederverwenden kann,
musst Du in der Dokumentation nachschauen.
Im Zweifel solltest Du Code so schreiben, dass der Code, der die Transaktion benoetigt, sie nicht selbst erzeugt, sondern sich diese von einem
Manager Objekt besorgt. Dann kannst Du die Strategie - ob eine globales Objekt oder viele - an zentraler Stelle aendern, ohne an vielen Stellen
deinen Code anpassen zu muessen.
Wenn Du einen Connection Pool benutzt - wirst Du wahrscheinlich um so einen Verwalter nicht herumkommen, da sich jemand um die Zuordnung von
Transaktionsobjekten zu Connections kuemmern muss.
Ciao
Stefan
ich kenne zwar lazarus konkret nicht, aber das scheint mir in diesem Fall auch nicht so wichtig.
Ueblicherweise hat man in einer Connection immer nur eine Transaktion. Ob man in Lazarus so ein Transaktion Objekt wiederverwenden kann,
musst Du in der Dokumentation nachschauen.
Im Zweifel solltest Du Code so schreiben, dass der Code, der die Transaktion benoetigt, sie nicht selbst erzeugt, sondern sich diese von einem
Manager Objekt besorgt. Dann kannst Du die Strategie - ob eine globales Objekt oder viele - an zentraler Stelle aendern, ohne an vielen Stellen
deinen Code anpassen zu muessen.
Wenn Du einen Connection Pool benutzt - wirst Du wahrscheinlich um so einen Verwalter nicht herumkommen, da sich jemand um die Zuordnung von
Transaktionsobjekten zu Connections kuemmern muss.
Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.
Re: Lazarus und Datenbankzugriff
@Strathmore, Du bist doch im deutschen Lazarusforum registriert, warum postest Du da nicht? Als ich Dir neulich unter erheblichen Zeitaufwand hier im Forum bei der Einarbeitung des Lazreports half, habe ich leider kein Feedback bekommen. Ich helfe wirklich gerne, aber so nicht!
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.
-
- Beiträge: 64
- Registriert: 31.12.2007 18:48:39
Re: Lazarus und Datenbankzugriff
Werter Ralli,ralli hat geschrieben:@Strathmore, Du bist doch im deutschen Lazarusforum registriert, warum postest Du da nicht? Als ich Dir neulich unter erheblichen Zeitaufwand hier im Forum bei der Einarbeitung des Lazreports half, habe ich leider kein Feedback bekommen. Ich helfe wirklich gerne, aber so nicht!
du denkst doch nicht im Ernst mir vorschreiben zu können in welchem Forum ich meine Beiträge zu posten habe!
Was ich aus Deiner Antwort lese, ist ein kleines Stück verletzter Eitelkeit. Nun sei wieder lieb und höre auf zu schmollen
Re: Lazarus und Datenbankzugriff
Verletzte Eitelkeit weise ich massiv zurück, ansonsten einverstanden.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.
-
- Beiträge: 64
- Registriert: 31.12.2007 18:48:39
Re: Lazarus und Datenbankzugriff
Schön. Dann wäre das geklärt ...
Kannst du sonst noch was zur Frage selbst beitragen?
Kannst du sonst noch was zur Frage selbst beitragen?
Re: Lazarus und Datenbankzugriff
Auf die Schnelle würde ich sagen, das dieselbe Transaction nicht erneut ausgeführt werden kann, bevor sie abgeschlossen oder verworfen wurde. Wenn ich mit Transactionen arbeiten würde, dann würde ich für jede Query auch eine eigene Transaction nehmen und sie entsprechend zuordnen. Aber meine Vorgehensweise ist eh eine andere. Ich habe bis heute 3 komplette Datenbankprogramme mit Lazarus und Freepascal geschrieben, den dbMaker für dateibasierte dBase Dateien, den FbMaker als Administrationsprogramm für den Firebird Datenbankserver, dann PGPlus, auch ein Administrationsprogramm für PostgreSQL und als viertes gesellt sich in wenigen Tagen der SQLiteMaker dazu für die dateibasierte Sqlite3 Datenbankengine. In allen Programmen wurde von mir der Lazreport als Reportgenerator integriert und arbeitet zur vollsten Zufriedenheit. Für das Datenbankdesign nehme ich nie die Lazarus eigenen Bordmittel, deshalb kommt die Transactionskomponente bei mir auch nicht zum Einsatz, sondern die Zeos DBO.
Guckst Du hier:
http://sourceforge.net/projects/zeoslib/
Die haben haben ein Mal einen Autocommit Mechanismus eingebaut, so das alle Prozesse ohne Probleme selbst verwaltet werden. Zum Zweiten brauche ich, um mich mit einer anderen Datenbank zu verbinden, lediglich das Zugangsprotokoll zu ändern, was eine Menge Programmierarbeit erspart, weil ansonsten die Abläufe ja immer die gleichen sind. Für die Navigation habe ich mir auch eine eigene Bibliothek erstellt, damit ich selbst die volle Kontrolle über die Vorgänge habe, die ich dann immer wieder verwenden kann, denn Programmierer sind faul und wollen nicht das Rad jedesmal neu erfinden. Einfach ist genial.
Guckst Du hier:
http://sourceforge.net/projects/zeoslib/
Die haben haben ein Mal einen Autocommit Mechanismus eingebaut, so das alle Prozesse ohne Probleme selbst verwaltet werden. Zum Zweiten brauche ich, um mich mit einer anderen Datenbank zu verbinden, lediglich das Zugangsprotokoll zu ändern, was eine Menge Programmierarbeit erspart, weil ansonsten die Abläufe ja immer die gleichen sind. Für die Navigation habe ich mir auch eine eigene Bibliothek erstellt, damit ich selbst die volle Kontrolle über die Vorgänge habe, die ich dann immer wieder verwenden kann, denn Programmierer sind faul und wollen nicht das Rad jedesmal neu erfinden. Einfach ist genial.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.
-
- Beiträge: 64
- Registriert: 31.12.2007 18:48:39
Re: Lazarus und Datenbankzugriff
Hallo Ralli,
vielen Dank für Deine Antwort. Sie hilft mir schon sehr viel weiter. Gehe ich richtig in der Annahme, dass bei zeoslib nicht jede Query eine Transaktion haben muss?
Schönen Gruss
vielen Dank für Deine Antwort. Sie hilft mir schon sehr viel weiter. Gehe ich richtig in der Annahme, dass bei zeoslib nicht jede Query eine Transaktion haben muss?
Schönen Gruss
Re: Lazarus und Datenbankzugriff
So ist es, es funktioniert einfach, ohne das da etwas extra programmiert werden muß.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.