获取误差而提供参数给存储过程
问题描述:
而提供参数给存储过程我正在以下错误:获取误差而提供参数给存储过程
过程或函数“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;
}
答
是否参数@ Movie_Name存在于您的存储过程中?如果参数确实存在,很可能是您未将值传递给objmymovie.MOVIE_NAME
是objmymovie.MOVIE_NAME是否为非null? – Joe 2011-12-19 19:34:54
也许众神对你可怜的命名规则感到不满?但严重的是,附加SQL Profiler并查看实际使用的SQL。你可能会看到一些有趣的事 – 2011-12-19 19:36:19