2012-02-22 57 views
2

我的代碼的全文檢索添加參數問題在C#

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*"') 

它可以搜索與「工程」開頭的字符串 - >英語,喇嘛等等。

但是在C#中執行上面的代碼,然後ExecuteReader()返回空列表。

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

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

爲什麼?我如何繼續@text參數必須包含''字符而不是搜索值?

謝謝

+1

如果你讀了你自己的問題,如果你沒有寫的,你明白了嗎?我正在考慮例如*「它可以搜索以」eng「 - > english,bla blah開頭的字符串。」* - 這裏不清楚你的意思。 *「@ text作爲值」value *「,但我想添加''字符。」* - 這應該是什麼結果,'value *'?或者可能是'價值*'''? *「但它不起作用!」*,爲什麼它不起作用?錯誤消息?它會崩潰嗎?什麼發生? *「我如何繼續@text必須包含''字符超過搜索值?」*所以文本應該是'value *'''?請儘量更清楚。 – Default 2012-02-22 09:47:09

回答

0

你可以嘗試使用sqlCommand.Parameters.AddWithValue("@text", value+"*");

如果上述方法無效,您可以使用SQL ParameterSqlDBType

我認爲你的SQL查詢是錯誤的。請參閱this發佈幫助。

C# constructing parameter query SQL - LIKE %

+0

我不想LIKE ...我將使用CONTAINS進行全文搜索,因爲它是我的項目更快的方法! – 2012-02-22 09:52:15

0

您是否試過指定數據類型?我不認爲你應該在sqlcommand字符串中需要引號。

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

或SqlDbType.NVarChar。

+0

*用於全文搜索當您使用CONTAINS關鍵字 – 2012-02-22 09:45:37

+0

我的不好,請參閱編輯答案。 – Nanhydrin 2012-02-22 09:50:13