Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t提供存储过程参数_C#_Asp.net_Sql Server_Stored Procedures - Fatal编程技术网

C# Can';t提供存储过程参数

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

当我运行上面可以看到的代码时,它抛出异常

过程或函数“ReturnCharacterInfo”需要未提供的参数“@CharacterID”

但正如您在代码中看到的,我提供了
@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();