com = new SqlCommand("SELECT pro_name from products where pro_name= @idP", con);
SqlParameter param = new SqlParameter
{
ParameterName = "@idP",
Value = proNames[i]
};
com.Parameters.Add(param);
它适用于整数类型,但对于字符串,它不起作用 它给出了错误
System.Data.SqlClient.SqlException: 'The parameterized query '(@idP nvarchar(4000))SELECT pro_name from products where pro_nam' expects the parameter '@idP', which was not supplied.'
答案 0 :(得分:2)
尝试传递正确的DBType
。在您的情况下,这将是NVarChar
确保proNames[i]
有值,不是Null
或EmptyString
SqlParameter param = new SqlParameter()
{
ParameterName = "@idP",
SqlDbType = SqlDbType.NVarChar, // your DBType
Value = proNames[i]
};
您也可以尝试添加如下参数:
command.Parameters.AddWithValue("@idP", proNames[i]);
答案 1 :(得分:1)
如果它是VAR *类型,你应该设置SqlDbType和Size。
SqlParameter param = new SqlParameter()
{
ParameterName = "@idP",
SqlDbType = SqlDbType.VarChar,
Size = 4000,
Value = proNames[i]
};
顺便说一下,如果你想要传递NULL - 你将不得不使用DbNull.Value
而不是普通的C#NULL。