Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi -502: Declared cursor already exists (https://www.delphipraxis.net/86014-502-declared-cursor-already-exists.html)

Codehunter 7. Feb 2007 22:16

Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS

-502: Declared cursor already exists
 
Ich bekomme neuerdings bei manchen Abfragen in nicht nachvollziehbarem Zyklus die Fehlermeldung "-502: Declared cursor already exists".

Ich habe eine permanent offene TZConnection und mehrere damit verbundene DataSets (TZQuery, TZTable usw.). Wenn ich ein neues Query absetze und ZEOS praktisch ein SELECT auf Firebird ausführt, erhalte ich manchmal diese Meldung.

Woher kommt das und wie stellt man das ab?

mkinzler 8. Feb 2007 06:46

Re: -502: Declared cursor already exists
 
Könnte daran liegen, das es pro Connection genau eine Transaktion gibt.

Codehunter 8. Feb 2007 11:17

Re: -502: Declared cursor already exists
 
Na sowas. Ich arbeite schon so lange mit ZEOS aber das Problem hatte ich bisher nicht. Kann man da irgendwas konfigurieren oder muß ich für jede ZTable, ZQuery usw. eine eigene ZConnection instantiieren und kann man überhaupt mehrere ZConnections gleichzeitig mit dem Embedded Server verbinden?

mkinzler 8. Feb 2007 11:34

Re: -502: Declared cursor already exists
 
Zitat:

kann man überhaupt mehrere ZConnections gleichzeitig mit dem Embedded Server verbinden?
Nein.

Codehunter 8. Feb 2007 14:37

Re: -502: Declared cursor already exists
 
Ist ja prickelnd. Und nun?

mkinzler 8. Feb 2007 14:41

Re: -502: Declared cursor already exists
 
Am besten ne andere Zugriffsbibliothek verwenden.

Codehunter 8. Feb 2007 16:12

Re: -502: Declared cursor already exists
 
Keine Chance, dafür ist das Projekt schon zu weit fortgeschritten. Außerdem denke ich liegt das Problem in meinem Code (denn früher gabs besagte Fehlermeldung nicht obwohl es die ganze Zeit mehrere Queries an einer Connection gab). Mehrere parallele Abfragen sollten doch für einen SQL-Server kein Problem sein.

hoika 8. Feb 2007 16:15

Re: -502: Declared cursor already exists
 
Hallo,

packe deine Queries in ZConnection.StartTransaction / Commit,
so dass sie immer unter einer einzigen Transaktion laufen.

Hast du multithreading oder mdi ?

Dann bleibt dir nur der Weg über mehrere ZConnections.
Zeos war als Ersatz der Bde gedacht (afaik)
Mehr als ein Transaktion pro Connection geht nicht.


#Edit:# es sieht so aus (google), als ob das ein Bug ein Zeos ist


Heiko

Codehunter 8. Feb 2007 16:26

Re: -502: Declared cursor already exists
 
Nein ich habe nur eine Single-Threading-Anwendung (von den Indy-Threads mal abgesehen). Ich hatte auch nach dem Problem gegoogled aber nur spanische und polnische Forenposts gefunden.

Das mit den ZTransaktions, kannst du mir das mal genauer erklären bzw. gibts im Web ne gute Erklärung?

hoika 8. Feb 2007 16:31

Re: -502: Declared cursor already exists
 
Hallo,

mein Fehler,
bei ZEOS ist es ja wie bei der Bde,
die Transaktion und die ZConnection sind gekoppelt:

Delphi-Quellcode:
ZConnection.StartTransaktion;
try
  Query_1.bla
  Query_2.bla
finally
  ZConnection.Commit;
end;
Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.
Seite 1 von 2  1 2      

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