AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] Feldwert bei Insert wird als Spalte interpretiert

[SQL] Feldwert bei Insert wird als Spalte interpretiert

Ein Thema von Medium · begonnen am 1. Jul 2011 · letzter Beitrag vom 1. Jul 2011
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#1

[SQL] Feldwert bei Insert wird als Spalte interpretiert

  Alt 1. Jul 2011, 13:05
Datenbank: MySQL • Version: 4.1.9 • Zugriff über: UniDAC
Mahlzeit!

Ich hab hier ein arg seltsames Phänomen. Folgede einfache Sache:
Delphi-Quellcode:
  Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = "'+Components[i].Name+'"';
  Qry.Execute;
führt zu diesem Fehler:
Code:
---------------------------
Anwendungsfehler
---------------------------
Exception EUniError in Modul MC_ZusatzZwenkau.exe bei 0011F9E0.
#42S22Unknown column 'T1Max' in 'field list'.
---------------------------
OK  
---------------------------
Der Inhalt von SQL.Text ist zum Zeitpunkt des Executes:
'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 Hat da wer eine spannende Idee parat? Dankschö schonmal!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert

  Alt 1. Jul 2011, 13:32
Keine Ahnung von ZEOS aber ich würde mal tippen, dass der Stringwert nicht "richtig" gequoted ist.
" durch ' ersetzen und oder mit quotedStr arbeiten.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert

  Alt 1. Jul 2011, 13:35
daher nehme man Parameter ... übrigens wird in SQL ein Text mit einfachen, nicht mit doppelten Quotes eingepackt:

Delphi-Quellcode:
  Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = '+QuotedStr(Components[i].Name);
  Qry.Execute;
oder besser
Delphi-Quellcode:
  Qry.SQL.Text := 'INSERT IGNORE INTO bild_dyn SET ElementName = :elementname';
  Qry.ParamByName('elementname').AsString:=Components[i].Name;
  Qry.Execute;
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert

  Alt 1. Jul 2011, 13:52
... übrigens wird in SQL ein Text mit einfachen, nicht mit doppelten Quotes eingepackt
Da ich schon Schnittstellen gesehen habe, die " als Stringbegrenzer genutzt haben.....
Leider nicht allgemeingültig.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: [SQL] Feldwert bei Insert wird als Spalte interpretiert

  Alt 1. Jul 2011, 13:57
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.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 09:59 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