如何从sqlite中检索Unicode字符串

时间:2014-01-26 13:58:08

标签: c# sqlite windows-phone-8

我将记录保存到两个表中的sqlite数据库中。当使用类对象检索数据时,没关系,但是当我创建视图并从视图中选择时。结果总是零记录。我继续检查字段,我终于发现在uft8中保存值的列会导致问题。

我的班级

public class Translation
    {
        string _ayaID, _text;
        byte _chapterID, _languageID;
        System.Windows.HorizontalAlignment _hAlignment;

        public string ArabicAyaID
        {
            get { return _ayaID; }
            set { _ayaID = value; }
        }
        public string ArabicAyaTranslation
        {
            get { return _text; }
            set { _text = value; }
        }
        public byte LanguageID
        {
            get { return _languageID; }
            set { _languageID = value; }
        }
        public byte ChapterID
        {
            get { return _chapterID; }
            set { _chapterID = value; }
        }
        public System.Windows.HorizontalAlignment HAlignment
        {
            get { return _hAlignment; }
            set { _hAlignment = value; }
        }
    }

以下检索从表

可以
string query = "select * from Translation where ChapterID = 1";
            List<Translation> listi = dbConn.Query<Translation>(query).ToList();//where ChapterID = " + chapter.SuraID).ToList();
            foreach (Translation li in listi)
            {
                li.ArabicAyaID = ConvertToArabicIndicString(Convert.ToInt16(li.ArabicAyaID));
            }
            return listi;

我只修改了它并创建了一个视图(类和视图具有相同的列名)

public class ArabicTextWithTranslation
    {
        string _ayaID, _arabicAyaTranslation, _arabicAya, _language, _description;
        byte _chapterID, _languageID;
        System.Windows.HorizontalAlignment _hAlignment;

        public string AyaID
        {
            get { return _ayaID; }
            set { _ayaID = value; }
        }
        public string Aya
        {
            get { return _arabicAya; }
            set { _arabicAya = value; }
        }
        public byte ChapterID
        {
            get { return _chapterID; }
            set { _chapterID = value; }
        }
        public System.Windows.HorizontalAlignment HAlignment
        {
            get { return _hAlignment; }
            set { _hAlignment = value; }
        }
        public string ArabicAyaTranslation
        {
            get { return _arabicAyaTranslation; }
            set { _arabicAyaTranslation = value; }
        }
        public byte LanguageID
        {
            get { return _languageID; }
            set { _languageID = value; }
        }
    }

下面的检索不起作用

string query = "select Ar.AyaID, Ar.Aya, Ar.ChapterID,Tr.ArabicAyaTranslation from ArabicText as Ar inner join Translation as Tr on Ar.AyaID = Tr.ArabicAyaID and Tr.ChapterID = Ar.ChapterID where Ar.ChapterID = " + chapter.SuraID;
             List<ArabicTextWithTranslation> listi = dbConn.Query<ArabicTextWithTranslation>(query).ToList();//where ChapterID = " + chapter.SuraID).ToList();
             foreach (ArabicTextWithTranslation li in listi)
            {
                li.AyaID = ConvertToArabicIndicString(Convert.ToInt16(li.AyaID));
            }
            return listi;

如果我从select语句中删除“Tr.ArabicAyaTranslation”列,一切都很好,如果我添加它,则检索为零。我在该列中存储了utf8字符。

我真的不知道会出现什么问题? (此查询在sqlite浏览器和firefox附加组件中运行良好)

谢谢!

0 个答案:

没有答案