我正在使用列ID从数据库中获取一个字符串。当我在SQLite DB浏览器中输入查询时,它返回需要的内容,但是当通过Java进行编码时,相同的查询什么也没有返回。
我的数据库包含一个名为Drugs的表,该表具有3列,即drug_id,drug_name和drug_overview。使用drug_id,我正在获取drug_overview。我尝试在数据库浏览器中查询该查询,该查询从drug_overview返回了正确的字符串,但是通过Java进行编码时,同一查询什么也不返回。
SQLite数据库浏览器查询:
SELECT * FROM drugs Where drug_id = 50;
JAVA代码:
String query105 = "SELECT * FROM drugs Where drug_id = " + drug_id;
Log.e("TESTDB1","Drugs table query: " + query105);
Cursor c105 = db.rawQuery(query105,null);
if (c105 != null){
while (c105.moveToNext()){
String overview = c105.getString(c105.getColumnIndexOrThrow("drug_overview"));
Log.e("TESTDB1","Overview: " + overview);
}
c105.close();
}
预期结果是概述:阿昔洛韦是一种抗病毒药。它减慢了疱疹病毒在体内的生长和传播。它不会治愈疱疹,但可以减轻感染症状。阿昔洛韦用于治疗由疱疹病毒引起的感染,例如生殖器疱疹,唇疱疹,带状疱疹和水痘以及水痘(水痘)和巨细胞病毒。阿昔洛韦也可以用于本用药指南中未列出的目的。
但实际结果是概述: 空 。当我更改查询中的ID时,它会给出使用其他药物的正确结果。
答案 0 :(得分:0)
您的查询返回0或1行,因此我认为您应该使用c105.moveToFirst()
而不是c105.moveToNext()
。 moveToNext应该用于列表,而不是单个条目。做类似的事情:
if (c105.moveToFirst()){
String overview = c105.getString(c105.getColumnIndex("drug_overview"));
// do something with the result
}
c105.close();
答案 1 :(得分:0)
恐怕您的问题可能出在实际数据本身上,正如Mike在评论中说的那样,我认为文件中的数据库很旧,您尚未将最新数据库复制到文件夹中。尝试重新安装和删除旧数据库