alexander2
Goto Top

SQL Command komplett parametrisieren

Hallo zusammen,

alles was ich möchte ist, zwecks umgehen von String-Verkettungen, ein SQL query komplett über Parameter steuern. (VS 2019 C#)

string strSQL = @"select * from teile where tnr=@teilenummer"
cmd.Parameters.Add("@teilenummer", SqlDbType.NVarChar, 64).Value = teilenummer;

... das funktioniert

string strSQL = @"select * from @iltable where arnr=@teilenummer";
cmd.Parameters.Add("@teilenummer", SqlDbType.NVarChar, 64).Value = teilenummer;
cmd.Parameters.Add("@iltable", SqlDbType.NVarChar, 64).Value = "teile";

... das funktioniert nicht, Fehler: "Die @iltable Tabellenvariable muss deklariert werden"

Ich finde tatsächlich auch immer nur Beispiele wo die Parameter für die eigentliche Ausdrucksauswertung eingesetzt werden.
Kann das sein, dass das überhaupt nicht geht ?

Content-ID: 667124

Url: https://administrator.de/forum/sql-command-komplett-parametrisieren-667124.html

Ausgedruckt am: 24.12.2024 um 05:12 Uhr

148121
Lösung 148121 27.05.2021 aktualisiert um 18:16:56 Uhr
Goto Top
Kann das sein, dass das überhaupt nicht geht ?
Jepp, parametrisieren kannst du nur die Werte nicht die Tabellen- oder Spaltennamen
https://stackoverflow.com/questions/23357481/how-can-i-pass-a-table-name ...

Kannst hier stattdessen aber weiterhin z.B. String.Format vor dem Parametrisieren benutzen, statt String concat.
bsp.
string strTblName = @"Teile";  
string strTeilenummer = @"12345";  
string sql = string.Format(@"SELECT * FROM {0} where tnr=@teilenummer", strTblName);  
SqlCommand cmd = new SqlCommand(sql);
cmd.Parameters.Add("@teilenummer", SqlDbType.NVarChar, 64).Value = strTeilenummer;  
// ....

Gruß w.
ukulele-7
Lösung ukulele-7 28.05.2021 um 09:21:27 Uhr
Goto Top
Oder du schreibst eine Stored Procedure in SQL (die dynamisches SQL verwendet) und den Tabellennamen als Variable annimmt.
https://stackoverflow.com/questions/22105121/how-to-take-table-name-as-a ...
Alexander2
Alexander2 31.05.2021 um 08:26:20 Uhr
Goto Top
Danke euch.