Statement terminator

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Strathmore
Beiträge: 17
Registriert: So 7. Jan 2007, 00:09
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Statement terminator

Beitrag von Strathmore »

Werte Lazarusgemeinde,

in einer Anwendung verwende ich zentral eine PQConnection (PostgreSQL). Diese wird beim Start der Anwendung geöffnet und offen gehalten. In einem Teil der Anwendung verwende ich eine SQLQuery und eine SQLTransaction. Bei beiden ist die Eigenschaft Database auf die PQConnection gesetzt und bei der SQLQuery die Eigenschaft Transaction auf die SQLTransaction. Soweit so gut, die Abfragen auf die Datenbank werden wie folgt abgewickelt:

Code: Alles auswählen

SQLQuery.SQL.Clear;
SQLQuery.SQL.ADD('select * from mytable');
try
  self.SQLQuery.Open;
except
    ON e : Exception do
      ShowMessage(E.Message);
end;
Nun habe ich heute auch einen anderen Teil der Anwendung getestet, nach dem Test der Ersten, bei dem die Struktur ähnlich aufgebaut ist (mit anderen SQLQueries und dazugehörenden SQLTransactions) und stellete fest, dass ich beim Aufruf einer Datenbankabfrage die Meldung: "Cannot assign transaction while old transaction active!" In beiden Teile der Anwendung wurde auf die Datenbank ausschliesslich lesend zugegriefen.

Kann es evtl. damit zusammenhängen, dass die Anweisung:
SQLQuery.SQL.Add('select * from mytable');
wie folgt aussehen müsste:
SQLQuery.SQL.Add('select * from mytable;'); //mit Semikolon im String

Dass der PostgreSQL Server die SQL-Anweisung ohne das Semikolon nicht als vollständig abgeschlossen sieht?

Für die Hilfe bedanke ich mich im Voraus.

Gruss
Zuletzt geändert von Lori am Fr 28. Jan 2011, 13:17, insgesamt 1-mal geändert.
Grund: Highlighter

Strathmore
Beiträge: 17
Registriert: So 7. Jan 2007, 00:09
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Statement terminator

Beitrag von Strathmore »

Achso ... noch eine kleine Unterfrage an Euch:
Verwendet Ihr bei den Zugriffen auf die Datenbank aplikationsweit eine Komponente der SQLTransaction oder habt ihr für jede SQLQuery eine eigene?

Vielen Dank im Voraus.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Statement terminator

Beitrag von mschnell »

Das "Statement Terminator" war doch wohl
I'll be back !

:twisted: Michael :twisted:

Strathmore
Beiträge: 17
Registriert: So 7. Jan 2007, 00:09
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Re: Statement terminator

Beitrag von Strathmore »

mschnell hat geschrieben:Das "Statement Terminator" war doch wohl
I'll be back !

:twisted: Michael :twisted:
Ja, ja. Du konntest nicht anders. Ich weiss.

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Statement terminator

Beitrag von Thomas B. »

Wenn Du mit der Auswertung von SQLQuery.Fields etc. zu Ende bist, dann mal ein SQLQuery.Close probieren.
Dann sollte die nächste Abfrage mit SQLQuery.Open bzw. SQLQuery.ExecSQL klappen.
Bei mir (MySQL) gehen die Abfragen auch ohne Semikolon am Ende.

Antworten