Maison > base de données > tutoriel mysql > Comment corriger l'erreur « Le nom de la variable « @ » a déjà été déclaré » dans le lot de requête SQL ?

Comment corriger l'erreur « Le nom de la variable « @ » a déjà été déclaré » dans le lot de requête SQL ?

Susan Sarandon
Libérer: 2025-01-01 08:24:11
original
737 Les gens l'ont consulté

How to Fix

Conflit de noms de variables dans un lot de requêtes SQL

Lors de l'exécution de requêtes SQL, il est crucial de garantir l'unicité des noms de variables dans un lot ou une procédure stockée . L'erreur "Le nom de la variable '@' a déjà été déclaré" indique que plusieurs variables portant le même nom ont été définies.

Pour résoudre ce problème, concentrez-vous sur le bloc de code fourni :

private void btn_lock2_Click(object sender, EventArgs e)
{
    // ...
    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;
        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;
        // ...
    }
}
Copier après la connexion

L'erreur réside dans l'ajout répété de paramètres dans la boucle. Déplacez plutôt la création du paramètre en dehors de la boucle :

// Moved outside the loop
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++)
{
    // ...
    rwd.command.Parameters["@LockState"].Value = 1;
    rwd.command.Parameters["@card_descr"].Value = txt_desc2.Text;
    // ...
}
Copier après la connexion

Vous pouvez également envisager d'effacer les paramètres dans la boucle :

for (long counter = from; counter <= to; counter++)
{
    rwd.command.Parameters.Clear();
    // ...
}
Copier après la connexion

En suivant ces recommandations, vous pouvez éliminer l'erreur et garantir l'unicité des noms de variables dans vos requêtes SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal