AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Where-Klausel in einfacher SQL-Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Where-Klausel in einfacher SQL-Abfrage

Ein Thema von Galaxydriver · begonnen am 25. Okt 2009 · letzter Beitrag vom 25. Okt 2009
Antwort Antwort
Seite 1 von 2  1 2      
Galaxydriver

Registriert seit: 14. Okt 2009
12 Beiträge
 
#1

Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:23
Datenbank: MS-SQL • Version: Express • Zugriff über: ADO
Hallo,

ich möchte eine simple Where-Abfrage in SQL machen:

Delphi-Quellcode:
var Vorname, Nachname, User: string;
begin

  User := 'Hans';

  ADOQuery1.Active := False;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like "%' + User + '%" ';
  ADOQuery1.Open;
  ADOQuery1.Active := True;

end;
Eigentlich kein Problem - aber es gibt mit dem User-Parameter ein Problem.

Ich bekomme jedesmal die Fehlermeldung, dass die Spalte 'Hans' nicht existiert.
Irgendwie wird der Suchparameter 'User' als Spaltennamen interpretiert??

Führe ich dagegen eine Abrage auf einen Integer-Wert durch, z. B.

'SELECT * FROM T_User WHERE ID = 1'; Bekomme ich eine korrekte Ausgabe..?

Weiss jemand, woran das liegen könnte?

cu
Chris
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:25
Verwende einfach Hochkommas
Markus Kinzler
  Mit Zitat antworten Zitat
Galaxydriver

Registriert seit: 14. Okt 2009
12 Beiträge
 
#3

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:33
meinst Du so:

  ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like " + User + " '; Das erkennt er wieder nur als Spaltennamen.
Ich steh anscheinend gerade auf'm Schlauch...?

cu
Chris
  Mit Zitat antworten Zitat
Galaxydriver

Registriert seit: 14. Okt 2009
12 Beiträge
 
#4

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:44
Selbst wenn ich den festen Stringwert reinschreibe, kommt der Fehler:

ADOQuery1.SQL.Text := 'SELECT * FROM T_User WHERE Vorname = Hans'; cu
Chris
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:48
Hi!

Ich glaube, es war mehr sowas gemeint:

ADOQuery1.SQL.Text := 'SELECT * FROM T_User WHERE Vorname = ''Hans''';
Grüße, Frederic


P.S.
Bitte innerhalb von 24h Beiträge editieren, um neue Infos hinzuzufügen anstatt ein Doppelposting zu machen.
Frederic Kerber
  Mit Zitat antworten Zitat
Galaxydriver

Registriert seit: 14. Okt 2009
12 Beiträge
 
#6

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:51
super, genau - jetzt funktionierts!!!

Immer diese gemeinen Anführungszeichen in den Strings...

Vielen Dank!!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 20:57
Zitat von Galaxydriver:
Immer diese gemeinen Anführungszeichen in den Strings...
Schau dir lieber auch mal parametrisierte Abfragen an. Ansonsten wird u.U. dein SQL Server per SQL-Injection übernommen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 21:01
Zitat von Galaxydriver:
super, genau - jetzt funktionierts!!!

Immer diese gemeinen Anführungszeichen in den Strings...

Vielen Dank!!
Du kannst übrigens auch die "-Anführungszeichen benutzen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 21:24
Zitat von Neutral General:
Du kannst übrigens auch die "-Anführungszeichen benutzen
Eigentlich nicht.
Einfache Anführungszeichen verwendet man bei Stringliteralen:
... WHERE User='Hans' Doppelte Anführungszeichen dienen dazu Bezeichner, also Feld- und Tabellennamen, so einzuschliesen:
...WHERE "User" = "Feld mit Leerzeichen" In obiger Where-Bedingung werden also zwei Feldnamen gleichgesetzt.

Manche Datenbanken weichen von dieser SQL/92 (und neuer) - Syntax ab,
was dazu führt, dass sich falsche Meinungen über die Verwendung von einfachen und doppelten Anführungszeichen
hartnäckig halten.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Problem mit Where-Klausel in einfacher SQL-Abfrage

  Alt 25. Okt 2009, 22:42
Sollte man da nicht besser mit Parametern arbeiten?

Delphi-Quellcode:
ADOQuery1.SQL.text := 'SELECT * FROM T_User WHERE Vorname like :_Vorname';
ADOQuery1.ParamByName('_Vorname').AsString := 'Hans';
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:37 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