我遇到了将字符串值作为参数传递给 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 对象。