Beim Versuch, SQL-Code auszuführen, kann die Fehlermeldung „Der Variablenname „@“ auftreten. „LockState“ wurde bereits deklariert. Variablennamen müssen innerhalb eines Abfragebatches oder einer gespeicherten Prozedur eindeutig sein. Dieses Problem entsteht durch die Einbeziehung mehrerer Instanzen desselben Parameters in eine Schleife.
Um diesen Fehler zu beheben, können Sie entweder die Parameter nach jeder Schleifeniteration löschen oder die Parameter vor der Schleife hinzufügen.
for (long counter = from; counter <= to; counter++) { // Clear parameters before adding new ones rwd.command.Parameters.Clear(); string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'"; rwd.command.CommandText = upd; rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)).Value = 1; rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)).Value = txt_desc2.Text; rwd.connection.Open(); rwd.command.ExecuteScalar(); rwd.connection.Close(); }
rwd.command.Parameters.Add(new SqlParameter("@LockState", SqlDbType.NVarChar)); rwd.command.Parameters.Add(new SqlParameter("@card_descr", SqlDbType.NVarChar)); for (long counter = from; counter <= to; counter++) { string upd = "update card set LockState=@lockstate, card_descr=@card_descr where [cardNumber] = N'{0}'"; rwd.command.CommandText = upd; // Assign values to parameters within the loop rwd.command.Parameters["@LockState"].Value = 1; rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text; rwd.connection.Open(); rwd.command.ExecuteScalar(); rwd.connection.Close(); }
Durch die Implementierung einer dieser Lösungen können Sie das Problem der Parameterredundanz effektiv lösen und die erfolgreiche Ausführung Ihres SQL-Codes sicherstellen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den SQL-Fehler „Der Variablenname ‚@' wurde bereits deklariert'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!