在Android应用程序中,新的SQLite记录在哪里保存到文件系统中?

时间:2014-12-12 03:46:16

标签: android android-sqlite

我正在尝试实现一个使用SQLite作为其数据存储的Android应用程序。我正在使用ActiveAndroid。我有一个名为Item的模型,我按以下方式创建项目,从Activity的onCreate方法调用它:

Item item = new Item();
item.name = "test item";
item.save();

启动我的应用程序后,我转到Android设备监视器以访问数据库文件。我看到的是我的应用程序的文件系统中的2个数据库:Application.db和todoListDatabase:

enter image description here

这两个数据库都包含一个名为items的表,但只有Application.db版本的items表实际上包含我创建的新项目记录。那是对的吗? 如果这是正确的,那么todoListDatabase是什么意思?

修改 以下是我的相关文件:

我的SQLite Helper类:

    public class ItemDatabaseHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME = "todoListDatabase";

    private static final String ITEMS = "items";

    private static final String KEY_ID = "id";
    private static final String KEY_BODY = "name";

    public ItemDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TODO_TABLE = "CREATE TABLE " + ITEMS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_BODY + " TEXT" + ")";
        db.execSQL(CREATE_TODO_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion == 2) {
            db.execSQL("DROP TABLE IF EXISTS " + ITEMS);
            onCreate(db);
        }
    }
}

我的项目类:

    @Table (name = "Items")
public class Item extends Model {

    @Column(name = "name")
    public String name;

    public Item() {
        super();
    }

    public Item(String name){
        super();
        this.name = name;
    }
}

2 个答案:

答案 0 :(得分:0)

这个问题中没有足够的信息可以让它得到回答。 SQLite数据库不仅会出现。你必须创建它们。通常,您使用SQLiteOpenHelper执行此操作。

除非你做了一些奇怪的事,否则你的数据库将在以下目录中:

/data/data/<your application's package name>/databases

例如,Google邮件应用程序的数据库可能是:

/data/data/com.google.android.gm/databases/mail.db

答案 1 :(得分:0)

因为我使用的是ActiveAndroid,所以创建SQLiteOpenHelper正在做双重工作。这就是我看到2个数据库的原因。为了解决这个问题,我删除了ItemDatabaseHelper类。然后,当我转到Android设备监视器查看数据库文件时,我看到Application.db是那里唯一的数据库,它包含我在其中创建的项目。