从数据库中获取空字符串时如何修复它?

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 在评论中所说,我认为您的文件中的数据库是旧的,并且您没有将最新的复制到文件夹中。尝试重新安装并删除旧数据库