Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Parameter in der Select-Anweisung
tomson456
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

Parameter in der Select-Anweisung

beantworten | zitieren | melden

Hallo,

ich hab folgendes Problem. Ich will in einer SELECT Anweisung einen Parameter verwenden, allerdings nicht im WHERE Teil sondern bei FROM. Ich hab in eine Datenbank mehrer gleiche Tabellen und will davon eine bestimmte wählen.

Hab bis jetzt folgendes probiert:


string table=Request.QueryString["id"];
oleDbSelectCommand1.Parameters.Add("@tab",table);
oleDbSelectCommand1.CommandText = "SELECT [IP-Nummer], Rechner, Beschreibung FROM [@tab]";

table wird über den Anhang an der URL befüllt. Die übergabe funktioniert auch richtig. Aber es kommt immer wieder die Fehlermeldung das die Tabelle nicht gefunden werden konnte.

Kann man auch in der FROM Klausel der SELECT-Anweisung Parameter verwenden?

Vielen Dank schonmal für eure Hilfe
gruss, Tom
private Nachricht | Beiträge des Benutzers
DeveloperX
myCSharp.de - Member



Dabei seit:
Beiträge: 462
Herkunft: .at/ooe&stmk

beantworten | zitieren | melden

Hallo!

vielleicht liegts an den eckigen Klammern um den Parameter ... ich kenn das nur ohne!

mfg
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

Das mit den eckigen Klammern funktioniert. Ich habe es zwar noch nie gesehen, aber ich werde mir auf alle Fälle merken, dass man die auch benutzen kann.

Sind sich die Tabellenstrukturen der unterschiedlichen Tabellen sehr ähnlich, wenn aus allen Tabellen das gleiche ausgewählt wird? Könntest du dann nicht eine ,,große`` Tabelle verwenden und andere Unterscheidungsmerkmale einbauen?

Ob der Parameter im From-Teil funktioniert kannst du da nachlesen:
http://msdn2.microsoft.com/en-us/library/ms188927(en-US,SQL.90).aspx
Aber ich wüsste nicht, warum das nicht auch gehen soll.
Besuchen sie das VisualC++ - Forum
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Die eckigen Klammern dienen im SQL-Server als Trennzeichen, wenn ich zum Beispiel einen Feldnamen mit einer Leerstelle darin habe ... oder einen Feldnamen mit einem Sonderzeichen (wie [IP-Adresse]) .... oder einen Feldnamen, der ein Schlüsselwort darstellt.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Ach ja, und PS: Parameter können meines Wissens nach nur für Felder eingesetzt werden, nicht für Tabellen oder sonstiges.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers
tomson456
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

Hallo,

vielen Dank für eure Antworten. Das mit dem Parameter geht anscheinend wirklich nicht. Aber ich hab ne Lösung gefunden. Ich setze mir die SELECT Anweisung als String zusammen und übergebe sie der dem oleDbSelectCommand1.CommandText als variable.


string table=Request.QueryString["id"];
string select = "SELECT [IP-Nummer], Rechner, Beschreibung FROM ["+table+"]";
oleDbSelectCommand1.CommandText = select;

Damit funktioniert es.

Viele Grüße
Thomas
private Nachricht | Beiträge des Benutzers
Druid
myCSharp.de - Member



Dabei seit:
Beiträge: 155
Herkunft: Essen

beantworten | zitieren | melden

Nur (grade bei Webanwendungen tötlich) kann es hierbei schnell zur SQL Injection kommen!!!

Ich weiß, manchmal denkt mal als Entwickler ein bisschen Optimistisch (wird schon nix passieren), passierts dann denkt man nach. Übrigens: Selbst über den Connectionstring kann man schon unerwartete Sachen machen.

So nun der Link nach der ganzen Moral:

SQL Injection


Gruß Christian
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Dem kann ich mich nur anschließen .... der oben gezeigte Code ist ganz ganz ganz ganz ganz ganz furchtbar schlecht ;-). Schlecht im Sinne von unsicher.

Wenn Du auf einen Querystring dafür zurückgreifen willst, prüfe IMMER gegen eine Liste von vordefinierten Werten, um zu verhindern, dass jemand irgendwelchen Mist einschleust. Entspricht der hereinkommende Wert keinem erwarteten, melde einen Fehler.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers