Entwickler-Ecke
Datenbanken - Selectanweisung mit WHERE Feld nicht leer
Krischa - Di 02.06.09 12:04
Titel: Selectanweisung mit WHERE Feld nicht leer
Hi,
ich brauche eine Selectanweisung die mir nur gefüllte Felder anzeigt. Bis her habe ich es folgendermaßen gemacht:
Delphi-Quelltext
1: 2: 3: 4:
| query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'"'; query2.open; if query2.FieldByName('EAN').Value<>NULL then prod[j].pn:=query2.FieldByName'EAN').Value;query2.open; |
Wie kann ich die Selectanweisung schreiben damit er mir gleich nur gefüllte Felder ausgibt. Das Feld EAN darf nicht leer sein.
Robert.Wachtel - Di 02.06.09 12:09
SQL-Anweisung
1:
| SELECT EAN FROM artikelTabelle WHERE ART = :ArtikelNr AND EAN IS NOT NULL |
Und bitte arbeite mit Parametern (Stichwort: SQL Injection).
Eine Angabe des verwendeten RDBMS wäre übrigens grundsätzlich angebracht.
Krischa - Di 02.06.09 12:12
Delphi-Quelltext
1:
| query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'" AND EAN IS NOT NULL'; |
Funktioniert zwar die Abfrage aber er mekert wenn ich auf das Feld zugreifen will das nichts darin steht.
und was meinst du mit Parametern? (SQL-Anfänger)
Robert.Wachtel - Di 02.06.09 12:21
Krischa hat folgendes geschrieben : |
[...] Funktioniert zwar die Abfrage [...] |
Ja, wo ist dann das Problem?
Zitat: |
aber er mekert wenn ich auf das Feld zugreifen will das nichts darin steht. |
Wer meckert wann und wo mit welcher Fehlermeldung nach dem Du was getan hast?
Zitat: |
und was meinst du mit Parametern? (SQL-Anfänger) |
http://lmgtfy.com/?q=delphi+query+parameter+sql+injection
Krischa - Di 02.06.09 12:25
Delphi-Quelltext
1: 2: 3: 4:
| query2.SQL.Text:='SELECT EAN FROM '+art1+' WHERE ART="'+prod[j].ian+'" AND EAN IS NOT NULL'; query2.open; prod[j].pn:=query2.FieldByName('EAN').Value; query2.Close; |
er meckert bei der dritten Zeile. Typ NULL konnte nicht in String formatiert werden. Daraus ziehe ich das das Feld EAN leer ist, was wiederum durch die Abfrage nicht sein dürfte. Die Artikelnummer gibt es mehrmals in der Datenbank aber nur eine hat eine EAN-Nummer (wegen Gültigkeitsdatum).
Zum Thema Injektion: Der SQL-Server läuft auf einem Lan und hat kein Zugang zum Internet. Es sollte also kein Problem geben.
Robert.Wachtel - Di 02.06.09 12:28
Krischa hat folgendes geschrieben : |
[...] er meckert bei der dritten Zeile. [...] |
Wer ist
er?
Zitat: |
Typ NULL konnte nicht in String formatiert werden. Daraus ziehe ich das das Feld EAN leer ist, was wiederum durch die Abfrage nicht sein dürfte. [...] |
Woher willst Du das wissen? Vielleicht hat die Abfrage ja keinen einzigen Datensatz zurückgeliefert. Diesn Fall fängst Du ja nicht ab.
Delphi-Quelltext
1:
| if not queryMitTollemNamen.Eof then |
Zitat: |
Zum Thema Injektion: Der SQL-Server läuft auf einem Lan und hat kein Zugang zum Internet. Es sollte also kein Problem geben. |
Famous last words...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!