2013-08-20 97 views
0

我有一個名爲myMainTable的表,我想在我的DataView上操作一個.RowFilter。就目前我的代碼是這樣(用於的RowFilter值是一個示例值):有特殊字符的RowFilter

var mainDataView = maindataDataSet.Tables["myMainTable"].DefaultView; 
mainDataView .RowFilter = "LastName= '" + "Gemma O'Neil" + "'"; 
var mainDataTable = mainDataView.ToTable(); 

我當然有問題,它認爲(因爲「在奧尼爾)的我期待的價值在「Gemma O」結束。

我怎樣才能成功地應用RowFilter的全價值「傑瑪奧內爾」?

回答

0

對於這樣的情況,你只需要逃避'角色;這對於RowFilter,它只是另一種「:

string surname = "Gemma O'Neil"; 
    mainDataView .RowFilter = "LastName= '" + surname.Replace("'", "''") + "'"; 

(或者,更簡潔:

string surname = "Gemma O'Neil"; 
    mainDataView.RowFilter = 
     String.Format("LastName='{0}', surname.Replace("'", "''")); 

順便說一句,這是一個非常類似的問題所面臨的人們試圖避免SQL注入攻擊。如果這是一個新的發展,那麼我建議調查實體框架和LINQ,它會自動處理這個。

+0

謝謝。我認爲「只會完全打亂查詢。很高興知道它只是將其視爲單引號。謝謝!根據你的建議,我會看看LINQ – touyets