从数据库中获取空字符串时如何修复它?
How to fix empty string while fetching it from Database?
我正在使用列 ID 从数据库中获取一个字符串。当我在 SQLite DB 浏览器中输入查询时,它 returns 需要什么,但通过 Java.
编码时,相同的查询 returns 什么都没有
我的数据库包含一个 table 命名的药物,它有 3 列,即 drug_id、drug_name 和 drug_overview。使用 drug_id 我正在获取 drug_overview。我已经在 db 浏览器中尝试了查询,其中 returns 我从 drug_overview 中得到了正确的字符串,但是通过 java.
编码时相同的查询 returns 没有任何内容
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();
}
预期结果是概述:阿昔洛韦是一种抗病毒药物。它减缓了疱疹病毒在体内的生长和传播。它不能治愈疱疹,但可以减轻症状 infection.Acyclovir 用于治疗由疱疹病毒引起的感染,例如生殖器疱疹、唇疱疹、带状疱疹和水痘,以及水痘(chickenpox)和 cytomegalovirus.Acyclovir 也可用于本用药指南中未列出的用途。
但实际结果是概述:
空
.当我更改查询中的 ID 时,它给出了来自不同药物的正确结果。
您的查询 returns 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();
恐怕您的问题可能与实际数据本身有关,正如 Mike 在评论中所说,我认为您的文件中的数据库是旧的,并且您没有将最新的复制到文件夹中。尝试重新安装并删除旧数据库
我正在使用列 ID 从数据库中获取一个字符串。当我在 SQLite DB 浏览器中输入查询时,它 returns 需要什么,但通过 Java.
编码时,相同的查询 returns 什么都没有我的数据库包含一个 table 命名的药物,它有 3 列,即 drug_id、drug_name 和 drug_overview。使用 drug_id 我正在获取 drug_overview。我已经在 db 浏览器中尝试了查询,其中 returns 我从 drug_overview 中得到了正确的字符串,但是通过 java.
编码时相同的查询 returns 没有任何内容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();
}
预期结果是概述:阿昔洛韦是一种抗病毒药物。它减缓了疱疹病毒在体内的生长和传播。它不能治愈疱疹,但可以减轻症状 infection.Acyclovir 用于治疗由疱疹病毒引起的感染,例如生殖器疱疹、唇疱疹、带状疱疹和水痘,以及水痘(chickenpox)和 cytomegalovirus.Acyclovir 也可用于本用药指南中未列出的用途。
但实际结果是概述: 空 .当我更改查询中的 ID 时,它给出了来自不同药物的正确结果。
您的查询 returns 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();
恐怕您的问题可能与实际数据本身有关,正如 Mike 在评论中所说,我认为您的文件中的数据库是旧的,并且您没有将最新的复制到文件夹中。尝试重新安装并删除旧数据库