AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zu schnelle SQL-Befehle, ist das möglich?

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

Ein Thema von s.h.a.r.k · begonnen am 23. Mär 2007 · letzter Beitrag vom 23. Mär 2007
Antwort Antwort
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
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

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

  Alt 23. Mär 2007, 16:07
Hallo,

nehmen wir an, du hast momentan die Daten drin:
Code:
id | time
1  | 1
2  | 1
nun fuehrst du das aus:
update foo set time = 2 where id = 1 Dann sieht das jetzt so aus:

Code:
id | time
1  | 2
2  | 1
AffectedRows ist dann 1.

Nun fuehrst du das Query nochmal aus, das Ergebnis ist dasselbe, und AffectedRows ist 0. Wenn der bestehende Datensatz gleich dem neuen ist, d.h. keine Aenderung erfolgt, dann wird die Zeile nicht aktualisiert und AffectedRows bleibt folglich 0.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

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

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

  Alt 23. Mär 2007, 17:46
Ich wollte gerade schreiben, dass das mit diesem AffectedRows zusammenhängt, da ich mich nochmal hingesetzt habe und ein paar weitere Tests gemacht habe. Muss dazu sagen, dass ich eher der Anwender von MySQL bin und es nicht wirklich gut kenne Aber vielen Dank! Diese Info bringt mich allgemein schon recht weit!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:23 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