背景

把在工程中测试好的数据库信息碎apk一起发布,但是数据库不会自动安装,尤其里面内容很多的时候,不可能再去每个apk里面再写创建数据库,再写插入数据。

那么这样的话只能将写工程时候的数据库sqlite随apk一起发布了。

要点

  • 将随apk发布的数据库放在android工程下/res/raw路径下。
  • 数据库文件存到手机上时,路径在/data/data/包名/databases下,其他路径则会出错。

代码

public class TestSqlDatabase{        private static final String DATABASE_PATH = "/data/data/your.package.name/databases";    private static final int DATABASE_VERSION = 0;    private static final String DATABASE_NAME = "test.db";        private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;        private Context context;   private SQLiteDatabase database;        public TestSqlDatabase(Context context) {        this.context = context;                File file = new File(outFileName);        if (file.exists()) {            database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);            if (database.getVersion() != DATABASE_VERSION) {                database.close();                file.delete();                }        }        try {            buildDatabase();        } catch (Exception e) {            e.printStackTrace();        }            }    private void buildDatabase() throws Exception{        InputStream myInput = context.getResources().openRawResource(R.raw.test);        File file = new File(outFileName);                File dir = new File(DATABASE_PATH);        if (!dir.exists()) {            if (!dir.mkdir()) {                throw new Exception("创建失败");            }        }                if (!file.exists()) {                        try {                OutputStream myOutput = new FileOutputStream(outFileName);                                byte[] buffer = new byte[1024];                int length;                while ((length = myInput.read(buffer))>0){                    myOutput.write(buffer, 0, length);                }                myOutput.close();                myInput.close();            } catch (Exception e) {                e.printStackTrace();            }                }    }}

我是天王盖地虎的分割线

这也就是一个IO流的控制,与《Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)》有着异曲同工之妙。

《Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)》传送门:http://www.cnblogs.com/yydcdut/p/3744873.html

转载请注明出处:http://www.cnblogs.com/yydcdut

更多相关文章

  1. Android动态改变工程依赖
  2. 解决gradle下载慢,下载失败的办法
  3. 关于android 获得图片的总结
  4. 创建maven-android工程
  5. Android(安卓)sqlit java层源码分析
  6. android2.2更新为android2.3
  7. Android(安卓)调用系统相册选择照片与调用系统相机拍照保存照片
  8. AndroidManifest.xml的android:name是否带.的区别
  9. android studio混淆打包

随机推荐

  1. Unity3D与android交互
  2. Android——发送和接收广播
  3. android API之ActivityGroup
  4. Android8.0中获取U盘的各种信息
  5. Android框架Picasso介绍
  6. PopupWindow软键盘弹出遮挡输入框
  7. 图库/相册/播放器看不到迅雷下载的视频的
  8. Android(安卓)数据持久化
  9. [Android] 问题记录 - 如何把图像变成黑白
  10. android图片上传服务器