阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1205|回复: 0

[转帖] 将应用的sqlite文件放在sdcard中

[复制链接]
  • TA的每日心情
    开心
    2012-3-7 10:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2012-1-30 15:33:47 | 显示全部楼层 |阅读模式
    在应用中建立的sqlite文件,默认的存放位置是:
    data\data\包名\database文件夹
    今天突然想是否能放在sdcard中呢?就找了一些资料,有自己写sqlitedatabase的,然后决定创建的sqlite文件的位置。读取的时候也从创建的目录读取。
    下面是我的实现代码,我是继承sqliteopenhelper,在里面做文章。
    private class NoteDbHelper extends SQLiteOpenHelper {
    private File f = new File("/sdcard/dbfile/mynote.db");
    public NoteDbHelper(Context context, String name,
    Curso**ctory factory, int version) {
    super(context, name, factory, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
    if (f.exists()) {
    f.delete();
    }
    db = SQLiteDatabase.openOrCreateDatabase(f, null);
    db.execSQL(DATABASE_CREATE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    File f = new File("/sdcard/dbfile/mynote.db");
    if (f.exists()) {
    f.delete();
    }
    db = SQLiteDatabase.openOrCreateDatabase(f, null);
    db.execSQL(DATABASE_DROP_TABLE);
    onCreate(db);
    }
    @Override
    public synchronized SQLiteDatabase getReadableDatabase() {
    SQLiteDatabase db= SQLiteDatabase.openOrCreateDatabase(f, null);
    return db;
    }
    @Override
    public synchronized SQLiteDatabase getWritableDatabase() {
    SQLiteDatabase db= SQLiteDatabase.openOrCreateDatabase(f, null);
    return db;
    }
    }
    但是这样有几个问题:
    1、如果用户没有内存卡,还是需要加上判断的,最好能做一个自定义的安装过程,然后用户来决定安装在哪里。不知道android支持自定义安装过程吗?
    2、如果拔下卡,就没有数据了,也是个问题。


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表