C# Can';t提供存储过程参数
当我运行上面可以看到的代码时,它抛出异常 过程或函数“ReturnCharacterInfo”需要未提供的参数“@CharacterID” 但正如您在代码中看到的,我提供了C# Can';t提供存储过程参数,c#,asp.net,sql-server,stored-procedures,C#,Asp.net,Sql Server,Stored Procedures,当我运行上面可以看到的代码时,它抛出异常 过程或函数“ReturnCharacterInfo”需要未提供的参数“@CharacterID” 但正如您在代码中看到的,我提供了@CharacterID参数,它不是空的或null的 存储过程: OpenSqlConnection(); SqlCommand cmd = new SqlCommand("ReturnCharacterInfo", Con); cmd.Parameters.AddWithValue("@CharacterID", Char
@CharacterID
参数,它不是空的或null的
存储过程:
OpenSqlConnection();
SqlCommand cmd = new SqlCommand("ReturnCharacterInfo", Con);
cmd.Parameters.AddWithValue("@CharacterID", CharacterID);
SqlDataReader dr = cmd.ExecuteReader();
有什么建议吗 我会尝试显式指定参数的类型-如果该值为null,这一点尤为重要:
[ReturnCharacterInfo] @CharacterID int
as
select
CharacterName, characterSurname, CharacterIsMale, CharacterAge,
CharacterMood, CharacterHealth, CharacterInCity, CharacterInLocation,
Cities.CityName, Locales.LocaleTitle
from
Characters
INNER JOIN
Cities on Cities.CityID = Characters.CharacterInCity
INNER JOIN
Locales on Locales.LocaleID = Characters.CharacterInLocation
Where
CharacterID = @CharacterID
还有:你有打字错误吗三重检查所有出现的
CharacterID
-您的代码中是否有CharachterID
或类似的东西???正如code裸体所指出的,您需要设置SqlCommand的命令类型。由于存储过程的执行方式,需要告知SqlCommand对象它是一个存储过程
SqlCommand cmd = new SqlCommand("ReturnCharacterInfo", Con);
// added as per CodeNaked's comment - thanks! You've nailed it right on the head!
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CharacterID", SqlDbType.Int).Value = CharacterID;
显示存储过程,显示更多的代码。这是一个存储过程-不是存储过程,因为你一直在键入。。。在英语中,农产品是水果和蔬菜等……他还需要
cmd.CommandType=CommandType.storedProcess
。看起来我忘记了cmd.CommandType=CommandType.storedProcess;谢谢@Code裸体
OpenSqlConnection();
SqlCommand cmd = new SqlCommand("ReturnCharacterInfo", Con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@CharacterID", CharacterID);
SqlDataReader dr = cmd.ExecuteReader();