J'utilise adapter.InsertCommand pour insérer des données dans une table.La requête d'insertion SQL est exécutée deux fois
Le seul problème est qu'il est exécuté deux fois, me donnant ainsi des entrées doubles dans le DB. J'ai essayé de suivre l'exemple dans la documentation de adapter.InsertCommand
et mon propre code, mais obtenir le même résultat.
Voici mon code:
public class nokernokDAL
{
SqlConnection connection = new SqlConnection();
SqlDataAdapter adapter = new SqlDataAdapter();
public nokernokDAL()
{
connection.ConnectionString = EPiServer.Global.EPConfig["EPsConnection"].ToString();
connection.Open();
}
public void addNewComment(int userID, int pageID, string title, string comment)
{
string query = "INSERT INTO dbo.nokernok_kommentarer (userID, pageID, commentTitle, comment) " +
"VALUES ("+ userID +", "+ pageID +", '"+ title +"', '"+ comment +"')";
adapter.InsertCommand = new SqlCommand(query, connection);
adapter.InsertCommand.ExecuteNonQuery();
}
}
suggestions Anny dans la façon dont je peux éviter cela?
MISE À JOUR
droit, après un certain débogage, j'ai découvert que ma fonction newWallComplaint_Click
a été tiré à deux reprises. C'était parce que j'avais le code suivant:
protected void Page_Load(object sender, EventArgs e)
{
btnNewWallComplaint.Click += new EventHandler(this.newWallComplaint_Click);
}
Ne vérifiant pas PostBack, ceci exécute ma fonction après soumettre aussi. Donc, pour éviter que ma fonction ne fonctionne deux fois, j'ai ajouté une vérification pour PostBack.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
btnNewWallComplaint.Click += new EventHandler(this.newWallComplaint_Click);
}
}
Maintenant, ma requête n'est pas exécutée deux fois.
faire du débogage et déterminer si la fonction est exécutée deux fois d'une façon ou si elle exécute en fait le SQL deux fois . –
Je suppose que votre titre dit tout - « requête d'insertion SQL est en effet exécuté deux fois »! –
J'ai vu des utilisateurs "double cliquer" sur un bouton (les boutons n'ont besoin que d'un simple clic), ce qui fait que le code sous-jacent est exécuté deux fois, êtes-vous sûr que quelque chose comme ça ne se passe pas ici? –