AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL: select * from ... = "integer-wert"
Thema durchsuchen
Ansicht
Themen-Optionen

SQL: select * from ... = "integer-wert"

Ein Thema von markon · begonnen am 31. Okt 2003 · letzter Beitrag vom 3. Nov 2003
Antwort Antwort
Seite 2 von 2     12   
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#11

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 11:36
@ r_kerber: danke dir, dein vorschlag...adoquery1.sql.Add ('select * from tabelle1 where TorDiff = ' + such; ...brachte folgende fehlermeldung: "Inkompatible Typen: String und Integer"
...dann hab ich die zeile folgendermasen´geändert:adoquery1.sql.Add ('select * from tabelle1 where TorDiff = ' + inttostr(such)); ... und siehe da, es funzt!!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#12

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 11:50
Uuups.

Man sollte lesen was da steht.adoquery1.sql.Add ('select * from tabelle1 where TorDiff = ' + ed_such.text); So wäre es richtig gewesen.
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#13

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 13:23
jo, stimmt!
adoquery1.sql.Add ('select * from tabelle1 where tordiff = ' + inttostr(such)); ist letztlich doppelt gemoppelt, erst den string in integer und dann wieder zurückwndeln.
adoquery1.sql.Add ('select * from tabelle1 where tordiff = ' + ed_such.text) einfach das edit-feld angeben. fertig.
danke für deine hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#14

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 13:42
Ich würde aber immer davon abraten, Benutzereingaben ungeprüft in SQL-Statements einzubauen.
Ich weiss jetzt nicht, ob Deine DB und die ADO-Schnittstelle mehrere Statements in einer SQL-Anweisung akzeptieren, aber wenn ja, dann hättest Du ein ziemliches Problem, wenn der User in das Edit ed_such folgenden Text eingibt:

Code:
1; drop table 'tabelle1';
Das setzt natürlich voraus, das der User gewillt ist, die Datenbank zu zerschiessen. Aber sowas soll ja leider mal vorkommen...

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#15

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 13:42
Zitat von markon:
ist letztlich doppelt gemoppelt, erst den string in integer und dann wieder zurückwndeln.
Aber Du hast wenigstens vorher überprüft, ob in dem TEdit eine gültige Integerzahl eingegeben wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#16

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 15:00
Hallo, ich klink mich auch wieder ein
Generell würde ich jedem abraten eine SQL-Anweisung ohne Parameter zu verwenden. Bei Access Datenbanken mag das ja keine Auswirkungen haben, aber hat man einen SQL Server dann muss eine Anweisung dieser Artadoquery1.sql.Add ('select * from tabelle1 where tordiff = ' + ed_such.text) vom Server jedesmal beim Ausführen neu geparst, und der jeweilige Ausfürungsplan neu erstellt werden.
Hat man hier eine Multiuserumgebung (z.Bsp. einen Internetserver) wird diese Datenbank früher oder später den Geist aufgeben.
Werden stattdessen Parameter verwendet kann sich der Server auf die zuletzt geparste Anweisung verlassen und braucht nur noch die Parameterwerte auszutauschen.
Bsp.:
Delphi-Quellcode:
procedure Tfrm_spiele.bt_suchClick(Sender: TObject);
var such :integer;
begin
adoquery1.Close;
adoquery1.sql.Clear;

such := strtoint(ed_such.text);

adoquery1.sql.Text := 'select * from tabelle1 where TorDiff = :such';
adoquery1.Parameters.ParamByName('such').Value := such;

adoquery1.Open;

end;
Auch wenn man keinen Datenbankserver zur Verfügung hat würde ich trotzdem vorschlagen gleich auf diese Technik zu setzten, weil die Anwendung auch besser skalierbar wird.
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#17

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 15:06
Hallo Garby,

ich kann mich dem nur anschließen. Ich wollte allerdings eine einfache Lösung anbieten. Dann sollte man auch darüber nachdenken, ob man diese Abfrage dann nicht fest in die ADOQuery einträgt und für jede Tabelle ein eigenes ADOQuery-Objekt nutzt.

Gruß in's schöne Tirol, wo ich immer wieder gern Urlaub mache.
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#18

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 15:38
Das würde der Übersichtlichkeit des Projekts sicher guttun. Ausserdem hat man dann auch den Vorteil alle Parameter und zugehörigen Einstellungen bequem im OI zu tätigen.

Aber genug davon, ich glaub wir sollten an dieser Stelle keinen Datenbank-Crashkurs veranstalten
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
markon

Registriert seit: 12. Sep 2003
229 Beiträge
 
#19

Re: SQL: select * from ... = "integer-wert"

  Alt 3. Nov 2003, 16:04
@ garby

danke für dein posting. ist gut zu wissen was man besser machen kann. bei sehr vielen zugriffen lohnt sich das schon.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:17 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