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 ?
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 ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 667124
Url: https://administrator.de/contentid/667124
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
Kann das sein, dass das überhaupt nicht geht ?
Jepp, parametrisieren kannst du nur die Werte nicht die Tabellen- oder Spaltennamenhttps://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.
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 ...
https://stackoverflow.com/questions/22105121/how-to-take-table-name-as-a ...