2011-12-19 64 views
1

而提供參數給存儲過程我正在以下錯誤:獲取誤差而提供參數給存儲過程

過程或函數「ismovieexists」預計參數「@movie_name」,但未提供該

和用於程序insert_values_in_movie_master相同的錯誤消息..

public int add_movie(mymovie objmymovie) 
{ 
    SqlConnection cn = new SqlConnection(_connectionstring); 
    cn.Open(); 
    //SqlDataReader dr; 
    SqlCommand cmd = new SqlCommand("ismovieexists", cn); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@movie_name", objmymovie.MOVIE_NAME); 
    SqlParameter d = new SqlParameter("@d", SqlDbType.Int); 
    d.Direction = ParameterDirection.ReturnValue; 
    cmd.Parameters.Add(d); 
    cmd.ExecuteReader(); 
    int i = (int)cmd.Parameters["@d"].Value; 

    if (i == 0) 
    { 
     SqlCommand cmd1 = new SqlCommand(); 

     cmd1.Connection = cn; 
     cmd1.CommandType = CommandType.StoredProcedure; 
     cmd1.CommandText = "insert_values_in_movie_master"; 
     cmd1.Parameters.AddWithValue("@movie_name", objmymovie.MOVIE_NAME); 
     cmd1.Parameters.AddWithValue("@rating", objmymovie.RATING); 
     cmd1.Parameters.AddWithValue("@realease_year", objmymovie.REALEASE_YEAR); 
     cmd1.Parameters.AddWithValue("@starcast", objmymovie.STARCAST); 
     cmd1.Parameters.AddWithValue("@language", objmymovie.LANGUAGE); 
     cmd1.Parameters.AddWithValue("@display_home", objmymovie.DISPLAY_HOME); 
     cmd1.Parameters.AddWithValue("@block_status", objmymovie.BLOCK_STATUS); 
     cmd1.Parameters.AddWithValue("@no_of_copies", objmymovie.no_of_copies); 
     cmd1.Parameters.AddWithValue("@MOVIE_category", objmymovie.MOVIE_category); 
     cmd1.Parameters.AddWithValue("@MOVIE_flag", objmymovie.MOVIE_FLAG); 
     cmd1.ExecuteNonQuery(); 
     return i; 
    } 
    else 
     return 1; 
} 
+0

是objmymovie.MOVIE_NAME是否爲非null? – Joe 2011-12-19 19:34:54

+4

也許衆神對你可憐的命名規則感到不滿?但嚴重的是,附加SQL Profiler並查看實際使用的SQL。你可能會看到一些有趣的事 – 2011-12-19 19:36:19

回答

2

是否參數@ Movie_Name存在於您的存儲過程中?如果參數確實存在,很可能是您未將值傳遞給objmymovie.MOVIE_NAME