gpt4 book ai didi

c# - 指定的参数太多

转载 作者:行者123 更新时间:2023-11-30 13:33:08 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它允许人们列出电影以及编辑、插入和删除它们。在数据库中,我有三个表(电影、流派和电影流派),这个问题与向电影添加流派有关(通过添加到表 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 {
}
}
}

存储过程:

ALTER PROCEDURE usp_InsertMovieGenre
@GenreID varchar(500),
@MovieID int
AS
BEGIN
INSERT INTO MovieGenre (GenreID, MovieID)
VALUES (@GenreID, @MovieID);
END
GO

最佳答案

错误是因为这行

cmd.Parameters.Add("@MovieGenreID", SqlDbType.Int, 4).Direction = ParameterDirection.Output; 

解析修改存储过程

存储过程:

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

关于c# - 指定的参数太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9699838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com