Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Endlosschleife mit MySQL (https://www.delphipraxis.net/58932-endlosschleife-mit-mysql.html)

Icarus666 14. Dez 2005 18:16

Datenbank: MySQL • Version: 4.1.14 • Zugriff über: ZEOSlib

Endlosschleife mit MySQL
 
Hallo!
In folgender Function möchte ich die ID einer Detail-Tabelle zu einem Wert auslesen.
Falls der Wert nicht existiert soll er angelegt und die id zurückgegeben werden.

Delphi-Quellcode:
function TDataModule1.GetNameID(Table, Value: String): Integer;
begin
  Result := 0;
  if Table <> '' then
    with UpdateQuery do
    begin
      SQL.Clear;
      SQL.Add('SELECT id FROM '+ Table +' WHERE name = :value');
      ParamByName('value').AsString := Value;
      Open;
      if RecordCount > 0 then                // Existiert !
        Result := FieldByName('id').AsInteger
      else
      begin                                  // Anlegen !
        SQL.Clear;
        SQL.Add('INSERT INTO '+ Table +' (name) VALUES (:value)');
        ParamByName('value').AsString := Value;
        ExecSQL;
        ApplyUpdates;
        Result := GetNameID(Table, Value);
      end;
    end;
end;
Soweit klappt alles. Wenn ich allerdings als Value 'Waiting for darkness, Dancing at the crowded e.p' übergebe erhalte ich eine Endlosschleife.
Wahrscheinlich liegt es an dem Komma, vielleicht aber auch nicht.
Ich habe versucht den Parameter im ersten Statement in Hochkommas zu stellen, bekomme aber eine Fehlermeldung 'Parameter nicht gefunden...'

WASNU? :wall:

Flocke 14. Dez 2005 18:45

Re: Endlosschleife mit MySQL
 
Ist in dem String vielleicht am Ende ein Leerzeichen? Das mag MySQL nämlich nicht (bzw. wird beim Insert abgeschnitten aber beim Vergleich berücksichtigt).

Nachtrag:

Oder ist der String vielleicht zu lang für das Feld, so dass er beim Insert abgeschnitten wird?

Icarus666 14. Dez 2005 18:48

Re: Endlosschleife mit MySQL
 
Zitat:

Oder ist der String vielleicht zu lang für das Feld, so dass er beim Insert abgeschnitten wird?
Das Wars :wall: :wall: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 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