Android:有sqlite数据库的基本问题

时间:2011-04-10 10:01:27

标签: android sqlite

我在简单的Android应用程序中实现sqlite数据库时遇到了一些麻烦:

用户在Listview中显示动物列表。选择动物,用户被带到活动“动物”,该动物将显示动物的图片并为其提供选项

  • 查看Animal Bio
  • 返回

到目前为止一切都很简单,对吧?

我正在使用数据库,它将填充animalsView的数据库。数据库目前看起来像

表动物 -    _ID,    名称

表传记 -    _ID,    生物

在这里,我欢迎任何有关我的问题或如何改进我的实施的有用建议。

目前按以下方式填充数据库

long populateDB(){      


    String[] animalName = {"Lion" "Zebra", "Tiger", "Gorilla",...};
    String[] animalBios = {"Found in the "...}

    ContentValues animalNameVals = new ContentValues();
    ContentValues animalBioVals = new ContentValues();

    long[] rowIds = new long[animalName.length];


    // Populate the animal table
    for(int i = 0; i < animalName.length; i++){
            animalNameVals.put(KEY_ANIMALNAME, animalName[i]);
            rowIds[i] = db.insert(ANIMAL_TABLE, null, animalNameVals);
        }

    // Populate the Bio table
    for(int j = 0; j < bios.length; j++){
        animalBioVals.put(KEY_BIO, bios[j]);
        rowIds[j] = db.insert(BIOS_TABLE, null, animalBioVals);
    }

    return rowIds[0];
}

并且计划通过传递额外内容来告诉数据库列表中的哪个动物,例如,如果listItemClick == 1上的位置,传入虎并从db中检索tiger bio。

问题:

然后在Animal活动页面上是getExtra()== tiger,告诉活动从列表中选择了老虎并从DB..well加载这个bio,我看不出这个想法的有效实现方法我正在努力这样做。

我的第二个头痛来自于从Db添加bio到应用程序。原始我在一个字符串中有一个硬编码的测试生物,在TextView中显示。有没有办法从光标中检索字符串并将其添加到TextView id?我明白我需要一些适配器,我不明白为什么它不能像setResource(R.id.bio)= bio那样简单。

感谢您的阅读,任何帮助都很受欢迎。

1 个答案:

答案 0 :(得分:0)

第一个问题:首先,我不确定您为什么在Bio - 表中没有列Animal?由于没有Bio适合任何其他动物而不是它自己,你可以安全地做到这一点。通过这样做,您可以在选择时查询数据库,并将整个对象(包括动物和生物的名称)传递给下一个活动,并使用它来获取您的信息。如果这有点不清楚,请告诉我,我会尝试更好地解释它。

第二个问题:您可以使用Cursor从表格(也包括字符串)中获取值。要获取String,您可以执行以下操作:cursor是Cursor,其中包含数据库中的结果:

 String bio;
// Move Cursor to its first element
if(cursor.moveToFirst()) {
     // Make sure the cursor is not null
    if(cursor != null) {
        bio = cursor.getString(cursor.getColumnIndex("Bio")));
    }
}

旁注:如果我正确阅读了代码,您似乎使用long作为ID?据我所知,关于ID的常见问题是integers