非root下,如何将android中的数据库文件存放到外部存储并导出

来源:互联网 发布:newsql数据库有哪些 编辑:程序博客网 时间:2024/06/06 06:55

最近自学android,用的是自己的手机,Android版本太高,无法root,所以无法获取到私有目录下的数据库文件(后缀名为.db的文件),就无法查看自己创建的数据库,

上网上搜了一上午,找到了一个解决办法:就是将数据库文件保存到外部存储,然后通过adb pull phone_path pc_path :将手机端文件拉到电脑端,这样就可以查看自己创建的数据库文件
例子:

创建数据库步骤:
1.创建一个类继承SQLiteOpenHelper,需要添加一个构造方法,实现两个方法onCreate ,onUpgrade
构造方法中的参数介绍:

        //context :上下文   , name:数据库文件的名称    factory:用来创建cursor对象,默认为null         //version:数据库的版本号,从1开始,如果发生改变,onUpgrade方法将会调用,4.0之后只能升不能降
        super(context, "info.db", null,4);//name="info.db"
2.创建这个帮助类的一个对象,调用getReadableDatabase()方法,会帮助我们创建打开一个数据库3.复写oncreate和onupgrdate方法:    oncreate方法是数据库第一次创建的时候会被调用;  特别适合做表结构的初始化,需要执行sql语句;SQLiteDatabase db可以用来执行sql语句

网上了解到, 第一步构造函数中传入的name,既可以只传入文件名,
这时文件会保存在默认路径:
例如:

mContext.getDatabasePath("info.db").getPath();//name="info.db",这是默认路径

但是如果传入的name中包含路径的话,那么数据库文件会保存在所传入的路径,例如:

super(context, "/storage/emulated/0/info.db", null,4);

name=”/storage/emulated/0/info.db”,

文件保存位置为/storage/emulated/0/info.db

加上读写SD卡的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

最后通过
adb pull /storage/emulated/0/info.db c:/Users/山哥/Desktop/info.db
就可以将文件导入到桌面

考虑到不同手机外部存储路径可能不同的情况:
外部存储路径可以通过Environment.getExternalStorageDirectory().getPath()获得,
即在构造参数中传入:

super(context,Environment.getExternalStorageDirectory().getPath()+"/"+"info.db", null,4);
1 0
原创粉丝点击