android指定sqlite路径,更改数据库默认存储位置

18 篇文章 0 订阅

1,android默认的sqlite数据库是放在/data/data/appPackagename/database目录下的。

2,要修改db路径,只要在创建数据库的时候,更改db的路径的就可以了。 

具体代码如下:

TestDataBaseOperation.java

public class TestDataBaseOperation {

    //数据库名称
    private static final String DB_NAME = "test.db";
    private static  String DB_PATH = "";

    private final Context mContext;
    private static TestDataBaseOperation instance;

    private TestDataBaseOperation(Context context){
        this.mContext = context;

        DB_PATH =  DbHelper.getFilePath(context) + File.separator + DB_NAME;

        DbHelper.getInstance(mContext, DB_PATH);
    }

    /**
     * @param context 传入上下文
     */
    public synchronized static TestDataBaseOperation getInstance(Context context){
        if (instance == null && context != null){
            instance = new TestDataBaseOperation(context);
        }
        return instance;
    }
}

DbHelper.java 

public class DbHelper extends SQLiteOpenHelper {
    private final String TAG = "DbHelper ";

    /**
     * 数据库的版本号,以后要升级数据库,修改版本号为 +1 即可
     */
    public static final int DATABASE_VERSION = 1;


    private static DbHelper instance;
    /**
     * @param context 传入上下文
     * @return 返回DbHelper对象
     */
    public synchronized static DbHelper getInstance(Context context, String DATABASE_NAME){
        if (instance == null){
            instance = new DbHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        return instance;
    }

    // 构造方法不对外暴露
    public DbHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    public static String getFilePath(Context context) {
        String filePath;
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {// 优先保存到SD卡中
            filePath = Environment.getExternalStorageDirectory()
                    .getAbsolutePath() + File.separator + "MyDbData";
        } else {// 如果SD卡不存在,就保存到本应用的目录下
            filePath = context.getFilesDir().getAbsolutePath()
                    + File.separator + "MyDbData";
        }
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }

        return filePath;
    }

    /**
     * 数据库创建
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i(TAG, "onCreate");
    }

    /**
     * 数据库升级
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.i(TAG, "onUpgrade");
    }
}

如此:DATABASE_NAME的默认路径就修改完成了。可以在文件管理中查看。 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值