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-Key: 667124

Url: https://administrator.de/contentid/667124

Printed on: July 24, 2024 at 15:07 o'clock

Mitglied: 148121
Solution 148121 May 27, 2021 updated at 16:16:56 (UTC)
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.
Member: ukulele-7
Solution ukulele-7 May 28, 2021 at 07:21:27 (UTC)
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 ...
Member: Alexander2
Alexander2 May 31, 2021 at 06:26:20 (UTC)
Goto Top
Danke euch.