cql中的sql参数化查询用字符串

时间:2018-01-13 19:59:58

标签: c# sql database

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.'

2 个答案:

答案 0 :(得分:2)

尝试传递正确的DBType。在您的情况下,这将是NVarChar

确保proNames[i]有值,不是NullEmptyString

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。