hol*_*ard 3 c# sql asp.net stored-procedures
我正在开发一个应用程序,它允许人们列出电影以及编辑,插入和删除它们.在db我有三个表(Movie,Genre和MovieGenre),这个问题与向电影添加一个类型有关(通过添加到MovieGenre表,它保存了电影类型的轨迹).
下面是相关代码,以及抛出的异常.我只是无法弄清楚为什么我收到此错误消息,因为我使用正确数量的参数,因为我可以在调用sproc时在c#代码中看到它.
有人能看出这里的问题是什么吗?
例外: 过程或函数usp_InsertMovieGenre指定了太多参数.
异常详细信息: System.Data.SqlClient.SqlException:过程或函数usp_InsertMovieGenre指定了太多参数.
c#代码:
public void InsertMovieGenre(MovieGenre movieGenre) {
using (SqlConnection conn = CreateConnection()) {
try {
SqlCommand cmd = new SqlCommand("dbo.usp_InsertMovieGenre", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@MovieID", SqlDbType.Int, 4).Value = movieGenre.MovieID;
cmd.Parameters.Add("@GenreID", SqlDbType.Int, 4).Value = movieGenre.MovieGenreID;
cmd.Parameters.Add("@MovieGenreID", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
movieGenre.MovieID = (int)cmd.Parameters["@MovieGenreID"].Value;
}
catch {
}
}
}
Run Code Online (Sandbox Code Playgroud)
存储过程:
ALTER PROCEDURE usp_InsertMovieGenre
@GenreID varchar(500),
@MovieID int
AS
BEGIN
INSERT INTO MovieGenre (GenreID, MovieID)
VALUES (@GenreID, @MovieID);
END
GO
Run Code Online (Sandbox Code Playgroud)
因为这条线的错误
cmd.Parameters.Add("@MovieGenreID", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
Run Code Online (Sandbox Code Playgroud)
解决修改存储的procdeurre
存储过程:
ALTER PROCEDURE usp_InsertMovieGenre
@GenreID varchar(500),
@MovieID int,
@MovieGenreID int output
AS
BEGIN
INSERT INTO MovieGenre (GenreID, MovieID)
VALUES (@GenreID, @MovieID);
SELECT @MovieGenreID = @@identity
END
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9017 次 |
| 最近记录: |