![]() |
Datenbank: MySQL • Version: 4.1.9 • Zugriff über: UniDAC
[SQL] Feldwert bei Insert wird als Spalte interpretiert
Mahlzeit!
Ich hab hier ein arg seltsames Phänomen. Folgede einfache Sache:
Delphi-Quellcode:
führt zu diesem Fehler:
Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = "'+Components[i].Name+'"';
Qry.Execute;
Code:
Der Inhalt von SQL.Text ist zum Zeitpunkt des Executes:
---------------------------
Anwendungsfehler --------------------------- Exception EUniError in Modul MC_ZusatzZwenkau.exe bei 0011F9E0. #42S22Unknown column 'T1Max' in 'field list'. --------------------------- OK --------------------------- 'INSERT IGNORE INTO bild_dyn SET ElementName = "T1Max"' Also nichts spannendes. Die "Qry" ist eine einfache TUniQuery, die an anderen Stellen auch ihren Dienst tut, und die Tabelle nutzen wir in dieser Form auch schon einige Zeit (ElementName ist das einzige NOT NULL Feld darin, und auch der einzige Index). Das trat erst jetzt auf, wo ich die alten Zeos-Kompos gegen UniDAC getauscht habe, mit Zeos ging das bisher. Aber wie kommt UniDAC hier auf den Trichter, den einer Spalte zugewiesenen WERT als Spaltennamen zu interpretieren? Der selbe Fehler tritt auch auf, wenn ich das Statement so schreibe: 'INSERT IGNORE INTO bild_dyn (ElementName) VALUES ("T1Max")' Beide gehen aus einem anderen SQL Client heraus auch ohne Murren. Ich bin etwas ratlos :gruebel: Hat da wer eine spannende Idee parat? Dankschö schonmal! |
AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert
Keine Ahnung von ZEOS aber ich würde mal tippen, dass der Stringwert nicht "richtig" gequoted ist.
" durch ' ersetzen und oder mit quotedStr arbeiten. |
AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert
daher nehme man Parameter ... übrigens wird in SQL ein Text mit einfachen, nicht mit doppelten Quotes eingepackt:
Delphi-Quellcode:
oder besser
Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = '+QuotedStr(Components[i].Name);
Qry.Execute;
Delphi-Quellcode:
Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = :elementname';
Qry.ParamByName('elementname').AsString:=Components[i].Name; Qry.Execute; |
AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert
Zitat:
Leider nicht allgemeingültig. Gruß K-H |
AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert
Jap, das war der Fehler. Danke! Ich hatte mit " und ganz ohne getestet, das gab beides den Fehler, aber es lief beides ohne Murren im MySQL Admin Tool und mit Zeos. UniDAC scheint da dann weniger zu vergeben :) Die Fehlermeldung hat mich nur so völlig irritiert. Merci! (War ja fast zu einfach wieder, so im Nachhinein.)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz