2010-03-25 14 views
1

我的字符串包含引號;選擇語句崩潰。DataTable DataRow選擇帶引號的字符串

vm_TEXT_string = "Hello 'French' People"; 
vm_DataTable_SELECT_string = "[MyField] = '" + vm_TEXT_string + "'"; 
DataRow[] o_DataRow_ARRAY_Found = vco_DataTable.Select (vm_DataTable_SELECT_string); 

我不能使用該語句:字符串過濾器= 「[MyColumn]」 + 「LIKE '%」 +搜索內容+ 「%'」;

我發現字符串格式:

DataRow[] oDataRow = oDataSet.Tables["HasDiseas"].Select (string.Format ("DName='{0}'", DiseasListBox.SelectedItem.ToString())); 

任何建議到的Selecta字符串引號?

謝謝 符文

回答

1

對於一個數據表,你可以用兩個引號替換單引號:

string.Format("DName='{0}'", DiseasListBox.SelectedItem.ToString().Replace("'", "''") 

但請記住,你不應該用實際的SQL查詢做到這一點。破解者可能會濫用該技術來向您的數據庫發送不受歡迎的查詢。

另一種選擇是做這樣的事情:

IEnumerable<DataRow> rows = oDataSet.Tables["HasDiseas"].Where(r => r["DName"] == DiseasListBox.SelectedItem.ToString()); 
+0

非常感謝您的反饋 你能舉出一個例子嗎? vm_TEXT_string =「你好」法語「人」; – RBrattas

+0

vm_TEXT_string =「你好」法語「人」; 該字符串不能更改;這就是我的字符串在數據庫和DataTable中的樣子 – RBrattas

0

這取決於你的數據庫引擎,但一般來說,你可以擺脫單引號(')與兩個單引號('')。

雖然,最好的辦法是使用parametrized query,它會爲你做特殊字符轉義。

+0

非常感謝您的反饋! 這只是一個問題,當我在DataTable中使用select時。 有沒有一個聲明,我不必思考我的字符串是什麼? vm_TEXT_string =「你好」法語「人」; – RBrattas

相關問題