• 上篇文章讲的是用DatabaseHelper新建一个数据库再进行增删改查,但大多数情景是数据库已经存在了,那怎么去访问呢?思路是先判断data/data//databases目录下数据库是否存在,如果不存在,用流操作把res/raw或assets...

    上篇文章讲的是用DatabaseHelper新建一个数据库再进行增删改查,但大多数情景是数据库已经存在了,那怎么去访问呢?思路是先判断data/data/<package_name>/databases目录下数据库是否存在,如果不存在,用流操作把res/raw或assets目录下的数据库拷贝到data/data/<package_name>/databases目录,接下来就跟新建完数据库一样一样了。

    核心代码

    private void getData(){
            final String DATABASE_PATH="data/data/"+ this.getPackageName() + "/databases/";
            String databaseFile=DATABASE_PATH+"mydb.db";
            //创建databases目录(不存在时)
            File file=new File(DATABASE_PATH);
            if(!file.exists()){
                file.mkdirs();
            }
            //判断数据库是否存在
            if (!new File(databaseFile).exists()) {
                //把数据库拷贝到/data/data/<package_name>/databases目录下
                try {
                    FileOutputStream fileOutputStream = new FileOutputStream(databaseFile);
                    //数据库放assets目录下
                    //InputStream inputStream = getAssets().open("mydb.db");
                    //数据库方res/rew目录下
                    InputStream inputStream=getResources().openRawResource(R.raw.mydb);
                    byte[] buffer = new byte[1024];
                    int readBytes = 0;
    
                    while ((readBytes = inputStream.read(buffer)) != -1)
                        fileOutputStream.write(buffer, 0, readBytes);
    
                        inputStream.close();
                        fileOutputStream.close();
                    } catch (IOException e) {
                }
            }
            db = SQLiteDatabase.openOrCreateDatabase(databaseFile, null);
        }





    展开全文
  • 在我们开发的应用中,一般都会涉及到数据库,使用数据的时候会涉及到数据库的升级、...因此V1.0的数据库在V1.1版本需要升级,V1.0版本升级到V1.1时原来数据库中的数据不能丢失,那么在V1.1中就要有地方能够检测出来版本
  • 比如增加字段/删除字段/表结构重构等等,随着apk版本的升高,不同版本可能需要对数据库进行修改,但是要求是数据库升级不能影响用户的已存数据,所以今天就来看看数据库升级流程是怎样的。 目录 SQLiteDatabase...
  • 相信不少人在做项目时会数据库升级,可能涉及到数据结构的变化,下面写了个工具类,可以帮助在数据结构变化时,保留原数据不丢。 /** * Created by zeng on 2017/1/13. * 为了适用于如greenDao这样的框架,使用...
  • 这时便需要对原有的数据进行迁移,以保证不丢失数据。对数据库的迁移我们需要做一下几个步骤:① 创建临时表,将原来的数据复制到临时表中。② 删除原表,原表数据已经备份至临时表中,不再需要,进行删除。③ 创建...
  • 思路很简单,只需要把原来table中的数据转移就好 我们来看实现 @Override private String createTableBook="create table Book(id integer primary key autoincrement,author text,price real,pages integer,name ...
  • 2,版本升级时,如果数据库表中新加了个字段,如何在不删除表的情况下顺利过渡,从而不丢失数据。  数据库操作建议用ORM框架,简单高效。这里推荐xUtils,里面包含DBUtils。github地址:...
  • 场景描述:这次项目中要在用户表中添加两个新字段address和age,但是数据库更新导致app升级时需要考虑数据库之前老数据的备份,所以我们要能够把 旧版本app所使用的数据库迁移到新升级版本app能够使用的数据库。换言...
  • Android数据库ORMLite版本升级及数据的迁移概述 Android开发涉及到的数据库采用的是轻量级的SQLite3,一搬会选择第三方,而这里我选择ORMLite数据库,在开发中数据库表的设计往往不是一开始就非常完美,可能在应用...
  • 项目使用到Greendao当做数据库,升级的时候遇到个问题,但新添加int类型字段的时候,数据迁移报错了,查看到是因为新增int、long类型字段的时候,给的是NOT NULL,就是说不能为空。&amp;amp;amp;amp;amp;nbsp; ...
  • 我们在开发Android应用的时候,不可避免地要使用数据库。而数据库的结构在第一版的时候定下来,之后发布功能更新,或增加业务逻辑,原来的数据库结构可能就不适用了。而如果数据库的结构与之前版本的结构不同,新...
  • 数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。 总体思路 1,将表A...
  • Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很...
  • Android数据库GreenDao的相关使用和版本升级更新;博客地址: http://blog.csdn.net/dickyqie/article/details/76261450
  • 原因:应用升级,旧用户安装新版APK时需要更新本地数据库,复制旧数据库数据到新的数据库数据库添加了新的表或者新的字段 由于项目没有使用第三方数据库框架,所以使用了原生的方法(超级累,建议还是使用第三...
  • 参考:我有我的方式博客
  • 每个应用都需要对数据进行存储和更改,当然一些简单的数据数据比较少,就不必用数据库存数,可以用Android提供的SharedPreferences,这个相对数据库存取数据来说消耗的资源更少,而且存储方式更容易让人理解。...
  • Android 数据库存取图片 2019-01-08 17:51:43
    Android 数据库存取图片 数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎...
  • 硬盘有价 数据无价 为了保留客户信息,服务端将所有关于用户的行为全部保存到数据库中 为了服务器文件的安全,一般服务器都会配备两块硬盘 另一块专门实时备份服务器硬盘的数据,可见数据的重要性 手机端一般不会...
  • 当我们的app有数据需要保存到本地缓存时,可以使用file,sharedpreferences,还有sqlite。 sharedpreferences其实使用xml的方式,以键值对形式存储基本数据类型的数据。对于有复杂筛选查询的 操作,file和...
1 2 3 4 5 ... 20
收藏数 9,875
精华内容 3,950