【发布时间】:2019-08-19 06:19:30
【问题描述】:
我正在使用列 id 从数据库中获取一个字符串。当我在 SQLite DB 浏览器中输入查询时,它会返回所需的内容,但通过 Java 编码时,相同的查询不会返回任何内容。
我的数据库包含一个名为 drug 的表,它有 3 列,即 drug_id、drug_name 和 drug_overview。使用 drug_id 我正在获取 drug_overview。我在 db 浏览器中尝试了该查询,该查询从 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 时,它会给出不同药物的正确结果。
【问题讨论】:
-
"drug_overview" 看起来更像是一个列名而不是 column_index
-
c105.getColumnIndex("drug_overview") 返回列索引
-
您是否通过删除
WHERE部分检查设备上的数据库是否正确填充? -
是的,我的数据库不是空的,因为我可以通过相同的查询获取药物的名称
-
您缺少这一行 SQLiteDatabase db = this.getReadableDatabase();
标签: android mysql sqlite db-browser-sqlite