我将记录保存到两个表中的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附加组件中运行良好)
谢谢!