2012-02-07 11 views
0

にストアドプロシージャが見つかりませんでしたが、私は=行ったりするために失敗した(は私がやりたいことは、ユーザーがリンクをクリックしながら、クリック数が1ずつ増加しますです更新

出力

は見つかりませんでした。ストアド・プロシージャのシェアで勝つためにupdateMovieClicks'Howを? '、 '64'

私のストアドプロシージャ

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

ページのロードに私のプログラムコード

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

パラメータを設定していません。 –

答えて

2

あなたのエラーがocurringされます。これは、ストリング内のパラメーターをストアード・プロシージャー名と連結したためです。コマンドがタイプStoredProcedureであることを指定するとき、あなたはコマンドテキストに別々にごパラメータを追加


。したがって、ストアドプロシージャ名のみがコマンドテキストに入り、パラメータは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(); 

movieClicksは、SQLレベルで計算されるように、私はまた、あなたのストアドプロシージャのクエリを改善しました。

0

あなただけのSqlCommandオブジェクトのコンストラクターにストアドプロシージャ名を指定する必要があります。システムはあなたが'updateMovieClicks'How to win in share?','64'というストアドプロシージャを見つけようとしていると考えているので

var cmd = new SqlCommand("updateMovieClicks",conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.AddWithValue("@movieTitle", Session["videoName"].ToString()); 
cmd.Parameters.AddWithValue("@movieClicks", int.Parse(clicksIncrease)); 
関連する問題