在C#中为全文搜索添加参数问题

时间:2012-02-22 09:37:14

标签: c# asp.net sql-server-2005

我有这部分代码

string query = "SELECT ID, COL1 FROM TABLE1 WHERE CONTAINS(COL1,@text)";

sqlCommand.CommandText = sql;
sqlCommand.Parameters.Add("@text", value+"*");

value是一个函数参数。

对于全文搜索,sql语句必须如下:

SELECT ID, COL1 FROM TABLE1 WHERE CONTAINS(COL1,'"eng*"')

它可以搜索以“eng”开头的字符串 - >英语,bla blah。

但是在C#中执行上面的代码然后ExecuteReader()返回空列表。

@text的值为"sometext*",但我想添加' '个字符。

我试过string query = "SELECT ID, COL1 FROM TABLE1 WHERE CONTAINS(COL1,'@text')"; 但它不起作用,返回空列表。

为什么?如何继续@text参数必须包含''个字符而非搜索值?

谢谢

2 个答案:

答案 0 :(得分:0)

您是否尝试过指定数据类型?我认为你不应该在sqlcommand字符串中使用引号。

sqlCommand.Parameters.Add("@text", SqlDbType.VarChar);
sqlCommand.Parameters["@text"].Value = value+"*";

或SqlDbType.NVarChar。

答案 1 :(得分:0)

您可以尝试使用sqlCommand.Parameters.AddWithValue("@text", value+"*");

吗?

如果以上操作不起作用,您可以使用SQL ParameterSqlDBType

我认为您的SQL查询错误。请参阅this帖子帮助。

C# constructing parameter query SQL - LIKE %