Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#17

AW: Array aus DB mit Zahlen füllen

  Alt 13. Mär 2014, 18:31
Moin,

ich habe mich schon auf Sir Rufo (#11) bezogen. Dass ich pro Import einer Datei tausend Mal ein commit sende was dann jedes Mal die DB beschickt, den Cache leert und was sonst noch so, ist verständlich.
Ich habe die Commits raus genommen und laufe vor die nächste Wand. Query.ExecSQL klappt nicht mehr. Offensichtlich hat das commit die verbundene Transaction so geerdet, dass ein Neuaufruf mit StartTransaction möglich ist.

Wie ist der genaue Ablauf? Ich habe eine Query, die einer Transaction zugeordnet ist. Die Transaction steht auf read_committed.
Ich habe bisher Transaction.StartTransaction -> Query.SQL.Clear -> Query.SQL.Add -> Query.ExecSQL. Wenn ich danach eine Query.open abfrage, bekomme ich eine Exception.

Ich vermute, dass ich das commit mit etwas Anderem ersetzen muss.

Grüße, Messie

Edit: wann kann ich auf das Transaction.StartTransaction verzichten? Denn das spuckt mir (Edit4: nach dem Entfernen des commit) in die Suppe. Ist das mit Performance verbunden? Also eher Transaction.Active = false und dann mit Starttransaction oder kann die die ganze Zeit offen bleiben?
Edit2: sehe ich das richtig, dass eine Query.open (nur Lesen) kein Transaction.active braucht und eine Query.ExecSQL (z.B. Schreiben) eine Transaction.active benötigt? Das sieht mir gerade so aus...
Edit3: ist dem Query.Open der Zustand der Transaction wegen des Nur-Lesens egal?

Danke!

Geändert von messie (14. Mär 2014 um 09:56 Uhr)
  Mit Zitat antworten Zitat