2012-02-07 2 views
0

ce que je veux faire est de tout utilisateur cliquez sur le lien, les clics augmenteront de 1 mais je pas faire = (Impossible de trouver procédure stockée sur la mise à jour

sortie

Impossible de trouver le procédure stockée 'updateMovieClicks'How pour gagner de la part?', '64'

ma procédure stockée

ALTER PROCEDURE updateMovieClicks 
(
@movieTitle varchar(50), 
@movieClicks int 
) 
AS 
update MovieListTable set [email protected] where [email protected]; 

mes programmes de code à la page charge

conn.Open(); 
SqlCommand cmdIncreaseMovieClicks = new SqlCommand("updateMovieClicks'" + 
    Session["videoName"].ToString() + "','" + clicksIncrease + "'", conn); 
SqlParameter movieTitle = new SqlParameter(); 
SqlParameter movieClicks = new SqlParameter(); 
cmdIncreaseMovieClicks.CommandType = CommandType.StoredProcedure; 
cmdIncreaseMovieClicks.Parameters.Add("@movieClick", SqlDbType.Int).Value 
= clicksIncrease+1; 
cmdIncreaseMovieClicks.ExecuteNonQuery(); 
conn.Close(); 
+0

Vous n'avez pas défini les paramètres. –

Répondre

2

Votre erreur est ocurring parce que le système pense que vous essayez de trouver une procédure stockée appelée 'updateMovieClicks'How to win in share?','64'. C'est parce que vous avez concaténé vos paramètres dans une chaîne avec votre nom de procédure stockée.


Lorsque vous indiquez qu'une commande est de type StoredProcedure vous ajoutez vos paramètres séparement au texte de commande. Par conséquent, seul le nom de la procédure stockée va dans le texte de la commande et les paramètres sont ajoutés en tant qu'objets séparés à SqlCommand.

ALTER PROCEDURE updateMovieClicks 
(
@movieTitle varchar(50) 
) 
AS 
update MovieListTable set movieClicks=(movieClicks+1) where [email protected]; 


SqlCommand cmdIncreaseMovieClicks = new SqlCommand("updateMovieClicks", conn); 
cmdIncreaseMovieClicks.CommandType = CommandType.StoredProcedure; 
cmdIncreaseMovieClicks.Parameters.Add("@movieTitle", SqlDbType.nvarchar).Value 
= session["videoName"].tostring(); 
conn.Open(); 
cmdIncreaseMovieClicks.ExecuteNonQuery(); 
conn.Close(); 

Ici, j'ai aussi amélioré votre requête de procédure stockée afin que le movieClicks est calculé au niveau SQL.

0

Il vous suffit de spécifier le nom de procédure stockée dans le constructeur de votre SqlCommand.

var cmd = new SqlCommand("updateMovieClicks",conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.AddWithValue("@movieTitle", Session["videoName"].ToString()); 
cmd.Parameters.AddWithValue("@movieClicks", int.Parse(clicksIncrease)); 
Questions connexes