1

我正在开发我的第一个 Android 应用程序,我正在尝试实现一个包含一堆食物类型(字符串)的数据库,例如“牛肉、猪肉、鸡肉”,并为它们提供烹饪时间值(int),例如 10000,50000, 30000 等。我的问题是实现这一点的最佳方法是什么。我觉得最好的方法可能是使用外部数据库,但我也在考虑它是否会让我的生活变得地狱。基本上我应该做一个我发现的可以在内部 SQlite 上工作的例子:

public void onCreate(SQLiteDatabase db) {           
        db.execSQL("CREATE TABLE IF NOT EXISTS "
                +NAMES_TABLE
                +" (_id INT PRIMARY KEY ,name VARCHAR);"
        );

        db.execSQL("INSERT INTO "+NAMES_TABLE+" values(1,'marco');");
        db.execSQL("INSERT INTO "+NAMES_TABLE+" values(2,'luca');");
        db.execSQL("INSERT INTO "+NAMES_TABLE+" values(3,'qlimax');");

    }

这将在启动时将值添加到内部数据库中,前提是它们不存在。
或者
我应该使用 SQlitebrowser 创建一个数据库并将其放在 /assets 中并从中读取?

现在我正在从 ArrayAdapter 读取我的值,我正在尝试替换它并从数据库中读取它,它看起来像这样:

final FoodType type[] = new FoodType[3];
    type[0] = new FoodType("Filet Mignon",50000);
    type[1] = new FoodType("Skirt Steak",0);
    type[2] = new FoodType("Flank Steak",25000);
    ArrayAdapter<FoodType> typeAdapter = new ArrayAdapter<FoodType>(this,android.R.layout.simple_spinner_item,type);
    typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

我该怎么办?内部还是外部?

4

1 回答 1

1

以我个人的经验,这取决于您的数据库有多大以及将会有多大。例如,我目前正在编写的应用程序有超过 50000 条记录的表,因此最好将已经创建的数据库复制到 assets 目录。

另一方面,如果您的数据库足够简单……最好从代码中填充它(相信我,这样可以避免一些麻烦)。

关于您的适配器...用 替换它SimpleCursorAdapter,它需要在构造函数中进行少量更改。

于 2010-12-04T02:12:47.717 回答