Comment réutiliser le paramètre SqlCommand à chaque itération?
Je veux implémenter un simple bouton supprimer de ma base de données. Le cas de la méthode ressemble à quelque chose comme ceci:
private void btnDeleteUser_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure?", "delete users",MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
command = new SqlCommand();
try
{
User.connection.Open();
command.Connection = User.connection;
command.CommandText = "DELETE FROM tbl_Users WHERE userID = @id";
int flag;
foreach (DataGridViewRow row in dgvUsers.SelectedRows)
{
int selectedIndex = row.Index;
int rowUserID = int.Parse(dgvUsers[0,selectedIndex].Value.ToString());
command.Parameters.AddWithValue("@id", rowUserID);
flag = command.ExecuteNonQuery();
if (flag == 1) { MessageBox.Show("Success!"); }
dgvUsers.Rows.Remove(row);
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
if (ConnectionState.Open.Equals(User.connection.State))
User.connection.Close();
}
}
else
{
return;
}
}
mais je reçois ce message:
Une variable @id a été déclarée. Les noms de variables doivent être uniques au sein d'
un traitement de requêtes ou de la procédure stockée.
Est-il possible de réutiliser cette variable?
source d'informationauteur miller
Vous devez vous connecter pour publier un commentaire.
Parameters.AddWithValue
ajoute un nouveau Paramètre à la commande. Depuis que vous faites cela dans une boucle avec le même nom, vous obtenez l'exception "les noms de Variables doivent être uniques".Si vous avez seulement besoin d'un seul paramètre, l'ajouter avant la boucle et de changer uniquement la valeur dans la boucle.
Une autre façon est d'utiliser des
de la commande.Les paramètres.Clear();
premier. Vous pouvez également ajouter le paramètre(s) dans la boucle sans créer le même paramètre deux fois.Plutôt que:
Utiliser quelque chose comme:
À l'extérieur de la boucle foreach, et juste définir manuellement l'intérieur de la boucle:
Erreur est parce que vous êtes en ajoutant le même paramètre, encore et encore, à chaque itération de la boucle.
Je me déplacerais qui code pour une autre méthode pour que je puisse l'appeler à partir de plusieurs endroits en tant que de besoin.
Puis l'appeler comme cela