我在我的Windows 8商店应用程序中使用sqlite。我一直在成功查询很多东西,但最近我尝试进行以下查询:
SELECT * FROM QuranText where AyaWithoutTashkeel LIKE '%الم%'
这总是返回0结果,对于任何阿拉伯语文本都是相同的,但是当文本是英语时:
SELECT * FROM Translation where TranslationText LIKE '%all%'
它有效并返回结果。
当然我确信数据库本身具有相同的值和一切。然而,我的其他应用程序(WP8应用程序)会在两个查询中返回结果。使用相同的.sqlite数据库并使用sqlite当然。
我认为这可能是一种编码问题?
答案 0 :(得分:0)
EDITED
我测试了你的查询,它在我的本地工作。你的编码类型是什么?
您可以使用以下命令查询编码类型:
PRAGMA encoding;
它应该是UTF-8。如果不是,您可以使用以下命令更新编码:
PRAGMA encoding = "UTF-8";
答案 1 :(得分:0)
经过大量试验,我们找到了解决方案。显然,SQL数据库上的SQLlite图层只有在以参数化查询样式输入时才能识别阿拉伯字母:
//define your connection here
static SQLite.SQLiteConnection dbConn = = new SQLite.SQLiteConnection(file.Path);
//in your method that makes the call:
string text="الم";
dbConn.Query<DB.QuranText>(@"SELECT * FROM QuranText where AyaWithoutTashkeel LIKE", "%" + text + "%");
这是唯一有效的方法。