无法将字符串作为参数传递给 MVC 中的存储过程 ASP.NET



我遇到了将字符串值作为参数传递给 C# ASP.NET MVC 中的存储过程的问题。任何帮助将不胜感激。

我尝试了各种设置参数的选项,例如

cmd.Parameters.AddWithValue("@P_ORG", pOrg);
cmd.Parameters.Add(pOrg);

代码片段:

using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlParameter param = new SqlParameter()
{
ParameterName = "@P_ORG",
Value = pOrg
};
SqlCommand cmd = new SqlCommand("getCCM", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(param);
using (SqlDataReader rdr = cmd.ExecuteReader())
{  
//do something 
}
}  

我希望下面的示例可以解决您的问题。

command.Parameters.AddWithValue("@parameterID", parameter1);

官方定义:

AddWithValue 替换了采用字符串和对象的 SqlParameterCollection.Add 方法。采用字符串和对象的 Add 重载已被弃用,因为 SqlParameterCollection.Add 重载采用字符串和 SqlDbType 枚举值,其中传递字符串的整数可能会被解释为参数值或相应的 SqlDbType 值。每当要通过指定参数的名称和值来添加参数时,请使用 AddWithValue。

来源:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

与解决方案类似的问题链接:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/e600eb8d-6c06-4c9e-ad37-5a7538c9accf/unable-to-execute-stored-procedure-with-parameters-in-mvc?forum=csharpgeneral

Parameters.Add 和 Parameters.AddWithValue 之间的区别

请让我知道您的想法或反馈

谢谢

Karthik MCP,MCSA

正如Pankaj Kapare的评论中所述,您必须添加

SqlDbType = SqlDbType.VarChar

到 SqlParameter 对象。

最新更新