我试图将参数传递给quert,但它不起作用。最好的方法是什么?我不想连接字符串。这是我的疑问:
string cmd = @"
SELECT
*
FROM
TABLE
WHERE
p.PromptTypeID = pt.ID
AND p.PromptDomainID = pd.ID
AND p.LanguageID = pl.ID
AND p.VoiceID = pv.ID
AND p.Active='Y'
AND PromptText LIKE ?
ORDER BY
p.ID DESC";
using (SqlCommand command = new SqlCommand())
{
command.CommandText = cmd;
command.Transaction = transac;
command.Connection = cnn;
command.Parameters.Add("?", SqlDbType.VarChar, 50).Value = "%" + text + "%";
using (SqlDataAdapter adp = new SqlDataAdapter(command))
{
adp.Fill(dt);
}
}
我无法使用LIKE运算符传递值。我也试过用@text代替"?"但它不起作用。有什么建议吗?
顺便说一下,它在'附近提供了错误的语法?' SQLEXCEPTION
答案 0 :(得分:1)
将?
替换为某个SQL变量并更改command.Parameters.Add
,如下所示
PromptText LIKE %@Text%
cmd.Parameters.Add("@Text", varYourtext);
答案 1 :(得分:0)
尝试
AND PromptText LIKE @text
和
command.Parameters.Add("@text"...
答案 2 :(得分:0)
我终于找到了解决方案。当我使用“.... LIKE%@ text%”并将参数传递给command.Parameters.Add(new SqlParameter("@text", text));
时,它会在'@text'异常附近给出错误的语法。
但是...
我使用了“.... LIKE @text”并使用command.Parameters.Add(new SqlParameter("@text", "%"+text+"%"));
传递参数。
答案 3 :(得分:-3)
您可以使用字符串连接。
cmd = cmd.Replace("?","'%" + text + "%'");