2012-09-27 137 views
3

我正在創建c#wpf應用程序,我正在爲我的數據(sqlite3.dll庫)使用SQLite數據庫。我來自斯洛文尼亞,所以我需要存儲包含像ščćžđ字符的字符串。我可以成功地存儲我的數據和設置我的數據網格的ItemsSource時,我的查詢看起來是這樣的:帶特殊字符的SQLite查詢(ščćž)

List<Odgovor> list = AppData.DBObject.Query<Odgovor>("select * from Odgovor"); 
      ObservableCollection<Odgovor> odgovorList = new ObservableCollection<Odgovor>(list); 
      this.dataGridOdgovor.ItemsSource = odgovorList; 

當我查詢

"select * from Odgovor where PersonName = \"Nick\""; 

但是,當我做到這一點我沒有得到任何resoults這是succesfull查詢(和數據在我的數據庫中,所以它是SQLite編碼問題)。

"select * from Odgovor where PersonName = \"Saša\""; 

到目前爲止我還找不到解決方案。我無法找到sqlite如何替換特殊字符,以便我可以替換代碼中的每個特殊字符......但我相信有更漂亮的解決方案:)

回答

1

1)嘗試使用參數而不是文字。數據庫連接器應確保正確的字符編碼

請參閱此鏈接:Adding parameters in SQLite with C#

2)您也可以嘗試這裏顯示的編碼thechnique:

http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/c1d98352-25a5-4ec4-8637-339fcee3715c/

+0

能否請你解釋一下第一種方法? – klonitklonit

+0

當然。我編輯的職位,以顯示一個鏈接到另一個帖子裏,你可以看到如何傳遞參數在C#中的SQLite –

+0

第二種解決方案是不工作 '字符串PERSONNAME = SkupniAtributi.personName;' 'UTF8Encoding UTF8 =新的UTF8Encoding() ;' 'byte [] b = utf8.GetBytes(personName);' 'string str1 = utf8.GetString(b);' 'tabOdgovor.Query =「select * from Odgovor where PersonName = \」「+ str1 +「\」「;' – klonitklonit