android – 在SD卡上的SQLite数据库

我正在寻找在sd卡上创建一个sqlite数据库(不想使用用户的内部存储).我熟悉OpenHelper模式:

public DatabaseFoo(Context context) {
    OpenHelper openHelper = new OpenHelper(context);
    mDb = openHelper.getWritableDatabase();
}

private static class OpenHelper extends SQLiteOpenHelper {
    public OpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    ...

所以如果我们想在sd卡上创建,我想我们必须使用:

public static SQLiteDatabase openOrCreateDatabase (String path, 
      SQLiteDatabase.CursorFactory factory);

但是“工厂”的论据是什么,应该使用哪个工厂?

还有一点担心如果用户在我的应用程序正在使用时删除SD卡会发生什么.

谢谢

我没有尝试做你在那里描述的,但可能是可以做的,可能会工作 – 有一些警告.首先,外部存储(SD卡)不安全,所以任何其他应用程序或用户都可以读/写.第二,正如你所说,当它被卸载时,数据库会消失.

由于这些缺点,您可能会尝试使用内部存储数据库(默认值),这很小,可能包含外部数据(如图像或文件)的指针,这些指针本身可以在外部存储器(当外部存储不可用时,它们具有占位符或其他处理方式).

但是,如果你想尝试一下,你可能会更好地覆盖ContextgetDatabasePath方法,比如用你自己的Application对象,然后把它传递给一个正常的SQLiteOpenHelper.然后你不用担心光标工厂(这是可选的,as the source confirms – 所以只要传递null,如果你想去那个路线).

相关文章
相关标签/搜索