Android外部与内部数据库混淆

时间:2010-12-04 01:53:50

标签: android sqlite database-connection android-arrayadapter

我正在开发我的第一个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');");

    }

这将在启动时将值添加到内部数据库,只有它们不存在时才会添加 OR
我应该用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);

我应该怎么做?内部还是外部?

1 个答案:

答案 0 :(得分:1)

根据我的个人经验,这取决于您的数据库的大小和数量。例如,我正在编写的应用程序具有超过50000条记录的表,因此最好将已创建的数据库复制到资产目录。

另一方面,如果你的数据库足够简单......最好从代码中填充它(它可以防止一些麻烦,相信我)。

关于你的适配器...用SimpleCursorAdapter替换它,它在构造函数中只需要很少的更改。