Autor Beitrag
burn!
Hält's aus hier
Beiträge: 4


Win XP Pro SP2, C# (VS 2003)
BeitragVerfasst: Fr 08.06.07 18:30 
moin moin, hoffe mir kann jemand helfen.
versuche aus einem programm ein select command gegen eine datenbank abzusetzen. das problem dabei ist, das ich dabei einen variablen spaltennamen in der select anweisung habe.
mein versuch sah (gekürzt) bis jetzt so aus:
ausblenden C#-Quelltext
1:
2:
3:
4:
cmd.Parameters.Add("@name", SqlDbType.Char);
cmd.Parameters["@name"].Value = "Spalte2"

cmd.CommandText = "SELECT @name FROM table WHERE id = 1"


das problem ist, dass jetzt der wert "Spalte2" in die zeile als wert eingefügt und nicht als spaltenname erkannt wird.
vermute aus versuchen mit abfragen direkt auf der datenbank, dass der typ char nicht als spaltenname genügt.
vielleicht hat ja jemand hilfe parat.

p.s. nutze übrigens MS SQL Server 2005...
Danke
Burn

_________________
der klügere kippt nach...!
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Mo 11.06.07 13:34 
user profile iconburn! hat folgendes geschrieben:
p.s. nutze übrigens MS SQL Server 2005...
Das tut mir zwar leid, aber das ist ein anderes Problem. ;)

Zitat:
das problem ist, dass jetzt der wert "Spalte2" in die zeile als wert eingefügt und nicht als spaltenname erkannt wird.
vermute aus versuchen mit abfragen direkt auf der datenbank, dass der typ char nicht als spaltenname genügt.
vielleicht hat ja jemand hilfe parat.
Parameter sind genauso Variablen, wie es in deinem C# Code auch wären. Du kannst also nicht pötzlich den Inhalt einer Variablen als Bezeichner verwenden (hier wäre es als Spalte).
was du machen kannst, ist das Statement selbst anzupassen, also den SQL-String.
Das ist auch nicht weiter tragisch, Spaltennamen haben ja nicht die gleichen Probleme, die mit überlangen Stringwerten, Kommazahlen oder Datumswerten auftauchen.

Kuzfassung: Statische teile eines SQL müssen auch tatsächlich direkt im SQL stehen, also Spalten, Tabellen, Funktionen, etc.
Sämtliche Werte, die du an ein SQL Statement übergeben willst sollten als Parameter übergeben werden.
burn! Threadstarter
Hält's aus hier
Beiträge: 4


Win XP Pro SP2, C# (VS 2003)
BeitragVerfasst: Mo 18.06.07 14:25 
danke danke für die hilfe....
war ein wenig in meinen gedanken festgefahren.

natürlich war die einfachste lösung, einfach den sql-string anzupassen.
und so hat es auch ohne probleme funktioniert!

_________________
der klügere kippt nach...!