2012-09-27 139 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