【问题标题】:SQLite query with special characters (ščćž)带有特殊字符的 SQLite 查询 (ščćž)
【发布时间】:2012-09-27 10:51:08
【问题描述】:

我正在创建 c# wpf 应用程序,并且我正在使用 SQLite 数据库存储我的数据(sqlite3.dll 库)。我来自斯洛文尼亚,所以我需要存储包含 ščćžđ 等字符的字符串。当我的查询如下所示时,我可以成功存储我的数据并设置我的 dataGrid itemsSource:

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\"";

但是当我做这个查询时我没有得到任何结果(并且数据在我的数据库中,所以这是 SQLite 编码问题)。

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

到目前为止,我无法找到解决方案。我找不到 sqlite 如何替换特殊字符,以便我可以替换代码中的每个特殊字符......但我相信有更漂亮的解决方案:)

【问题讨论】:

    标签: c# windows sqlite wpfdatagrid


    【解决方案1】:

    1) 尝试使用参数而不是文字。数据库连接器应确保正确的字符编码。

    查看此链接:Adding parameters in SQLite with C#

    2) 你也可以试试这里显示的编码方法:

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

    【讨论】:

    • 你能解释一下第一种方法吗?
    • 当然。我编辑了帖子以显示另一个帖子的链接,您可以在其中看到如何在 c# 中将参数传递给 SQLite
    • 第二种解决方案不起作用String personName = SkupniAtributi.personName;UTF8Encoding utf8 = new UTF8Encoding();byte[] b = utf8.GetBytes(personName);string str1 = utf8.GetString(b);tabOdgovor.Query = "select * from Odgovor where PersonName=\"" + str1 + "\"";
    • 很遗憾您决定放弃使用参数。事实证明,查询字符串中的连接值对应用程序安全构成威胁。
    • 我正在丢弃参数方法,因为我没有 SQLiteParameter 类。我正在使用来自 Krueger Systems 的 SQLite3.dll 和 SQLite.cs 和 SQLiteAsync.cs。现在我已经非常糟糕地解决了我的问题(用 #c 替换 č 等等......)
    猜你喜欢
    • 2012-03-23
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2020-03-18
    • 2018-05-15
    相关资源
    最近更新 更多