2017-05-28 5 views
2

Je reçois un message d'erreur Procedure or function Event_Update has too many arguments specified. tout en essayant de mettre à jour l'événement de table avec fonction de procédure de C# CodeProcédure ou Event_Update fonction a trop d'arguments spécifiés

procédure pour la mise à jour

create procedure Event_Update 
@id int, 
@image varchar(50), 
@title varchar(255), 
@description varchar(255), 
@date date 

as 

begin 
update event set image = @image,[email protected],[email protected],[email protected] where [email protected] 
end 

Table des événements

create table event(
id int identity(1,1) primary key, 
image varchar(50) not null, 
title varchar(255) not null, 
description varchar(255) not null, 
event_date date not null 
) 

code C#

public void update(int id,string title, string image, string events, string date) 
    { 
     cmd.CommandText = "Event_Update"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@id", id); 
     cmd.Parameters.AddWithValue("@title", title); 
     cmd.Parameters.AddWithValue("@image", image); 
     cmd.Parameters.AddWithValue("@description", events); 
     cmd.Parameters.AddWithValue("@date", date); 
     cmd.ExecuteNonQuery(); 
    } 
+0

Ne pas réutiliser les objets de commande. Créez-en un nouveau pour chaque requête que vous voulez exécuter. Ne réutilisez pas non plus les objets de connexions. Le pool de connexions DB gérera cela pour vous, il vous suffit donc de créer une connexion pour la portée d'une transaction et de placer les deux dans une instruction 'using' afin qu'elles soient éliminées. – juharr

Répondre

0

cmd est variable globale? clair cmd.Parameters dans update méthode:

public void update(int id,string title, string image, string events, string date) 
{ 
    cmd.Parameters.Clear(); 
    cmd.CommandText = "Event_Update"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@id", id); 
    cmd.Parameters.AddWithValue("@title", title); 
    cmd.Parameters.AddWithValue("@image", image); 
    cmd.Parameters.AddWithValue("@description", events); 
    cmd.Parameters.AddWithValue("@date", date); 
    cmd.ExecuteNonQuery(); 
}