Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Zu schnelle SQL-Befehle, ist das möglich?

  Alt 23. Mär 2007, 16:04
Datenbank: MySQL • Version: 5.x • Zugriff über: libsql
Hallo,

ich sitze zurzeit vor einem ehrlich gesagt eher etwas seltsamen Problem: ich habe zwei Rechner, auf dem einen läuft die Datenbank MySQL und auf dem anderen entwickle ich ein Programm für meinen Betrieb. Nun greife ich über libsql auf die Datenbank zu und alles funktioniert wunderbar, bis zu dem einen Punkt, an dem mehrere SQL-Befehle (UPDATE-Befehle) kurz hintereinander an die Datenbank geschickt werden. Ich nutze zum testen gerade die folgende Methode:

Delphi-Quellcode:
// Voraussetzungen:
// - TListBox zum loggen (ListBox1)
// - Verbindung zur Datenbank steht (MyDB1)
// - Es gibt den Datensatz mit ID 1 und UPDATE funktioniert damit
procedure SendTestCommands();
var
  sql : String;
  i : Integer;
begin
  sql := 'UPDATE test SET testtime = ''' + FloatToStr(Now) + ''' WHERE id = 1';
  for i := 0 to 10 do
  begin
    ListBox1.Items.Add(BoolToStr(MyDB1.Query, True));
    ListBox1.Items.Add(IntToStr(MyDB1.RowsAffected));
  end;
end;
Nun ist es so, dass nach dieser Schleife immer ein True gefolgt von einer 0 oder 1 kommt. Es sollte meines Erachtens nach aber immer eine 1 folgen und nicht nur ein mal, so wie es in diesem Beispiel leider ist (zumindest bei mir). Wenn ich allerdings nach den beiden Befehlen in der Schleife ein SleepEx(...) und mindestens 20 Millisekdungen angebe, dann bekomme ich als Ergebnis immer die 1, allerdings ist das eine sehr unsaubere Lösung.

Daher meine Frage: woran kann es liegen? Liegt es an einer MySQL-Einstellung, die ich ändern kann? Oder mache ich irgendetwas falsch?

Mit fischigen Grüßen
s.h.a.r.k
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat