AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Programm 2x offen=falsche Daten
Thema durchsuchen
Ansicht
Themen-Optionen

Programm 2x offen=falsche Daten

Offene Frage von "Teekeks"
Ein Thema von Teekeks · begonnen am 26. Jan 2010 · letzter Beitrag vom 27. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:15
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBConnection und/oder Zeos
Hallo!

Ich habe hier ein Problem mit meiner Datenbank.

Szenario:
-2x das selbe Programm welches immer die eigenen Daten von der Datenbank holt (selbe Tabellen)
-Beide sind Connectet
-Das eine Programm schreibt ein INSERT (z.B.)
-Beide Aktualisieren (SELECT)
-Bei dem von dem das INSERT ausgeht wird alles richtig angezeigt (also der Datensatz ist da)
-Bei dem anderen wird trotz SELECT der Datensatz nicht Angezeigt

Ich muss mich neu zur Datenbank Connecten damit der auch dort richtig angezeigt wird.


Was mache ich da falsch/ wie mach ich es richtig?

Das Problem tritt bei den Zeos-Komponenten genau so auf wie bei der IBConnection


Gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:27
Die beiden Verbindungen laufen ja in verschiedenen Transaktionen. Vermutlich wir nach dem Insert kein Commit ausgeführt.
Markus Kinzler
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:32
Doch doch, es wird ein Insert ausgeführt.
Die Daten landen ja auch in der Datenbank...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:34
Der Insert vielleicht schon, wird aber auch die Tranaktion abgeschlossen (commit)? Vorher sind die Änderungen nur in der selben Transaktion oder bei dirty-read sichtbar.
Markus Kinzler
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:40
Zitat von mkinzler:
Der Insert vielleicht schon, wird aber auch die Tranaktion abgeschlossen (commit)? Vorher sind die Änderungen nur in der selben Transaktion oder bei dirty-read sichtbar.
Firebird kennt kein "dirty-read".
Es muß immer ein Commit oder wenigstens ein CommitRetaining(führt auf Dauer zu Problemen) ausgeführt werden,
damit andere Transaktionen die geänderten Daten sehen können.


alex
Alexander
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 22:42
es wird ja auch ein commit hinterher geschickt...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 23:01
Guten Abend...

ich denke das Stichwort heißt Transaktion Level.

Stelle mal TransactionIsolationLevel auf tiReadCommitted statt auf tiNone dann werden alle Transaktionen welche commited sind für "andere" sichtbar.
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 23:12
Zitat von haentschman:
Guten Abend...

ich denke das Stichwort heißt Transaktion Level.

Stelle mal TransactionIsolationLevel auf tiReadCommitted statt auf tiNone dann werden alle Transaktionen welche commited sind für "andere" sichtbar.
Sowas gibt es hier irgendwie nicht... Bei welcher Komponente soll das sein?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Programm 2x offen=falsche Daten

  Alt 26. Jan 2010, 23:16
Guck mal in den Datenbakeinstellungen. Zumindest ich würde es da suchen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Programm 2x offen=falsche Daten

  Alt 27. Jan 2010, 08:30
Hallo,

Zitat:
Firebird kennt kein "dirty-read".
Besser ist das auch.


Das Problem ist, dass Programm 2 (Select)
erst eine neue Transaktion starten muss,
bevor es die Daten von Programm1 (nach dessen Commit) sehen kann.

Prog 1 Prog 2
StartTrans StartTrans
Insert Select -> keine Daten
Commit Select -> keine Daten
Commit
Select -> Daten sind sichtbar


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:24 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