使用Greendao进行批量添加数据(Android Studio读取assets下的数据库文件)

当我们使用greendao进行批量数据添加的时候,可以使用greendao提供的insert()方法,这个方法的使用范围适合在插入一条或者几条数据,只要原因在于的是,当我们使用greendao提供的insert()方法的时候,此时是需要进行new操作的,当我们进行new操作的时候,此时程序在运行的时候,此时的系统是要给当前的程序提供很多的内存空间,所以,根据尽量减少程序运行内存的原则,我们在程序中进行少使用new关键字,只要一是用new关键字,那么程序出现的症状,最突出的就是程序变得很卡,或者是出现死机的现象。

Android Studio中读取外部数据库文件,此时是将数据库文件放到的是assets目录下,注意的是,这里的assets目录是与javares目录是同级的,所以,我们在创建目录的时候要特别注意。

当创建完assets目录后,我们就要进行通过I/O流实现读取assets下的数据库文件,这里注意的地方就是,assets下的数据库文件是这样的:

 

这里注意的地方就是数据库的名字,必须要将数据库的名字写全了,也就是说其名字的末尾要带上”.db”。

接下来我们就是要创建一个类,这个类的作用就是读取assets目录下的数据库文件,并将这个数据库文件写入到SDcard中,如果SDcard中存在,那么就打开数据库,如果SDcard中不存在,就将从assets中复制过去。

public class SQLdm {
    String filePath = "data/data/showinfo.tongchuang.com.showinfo/databases/tongchuanghaiyang1234.db";
    String pathStr = "data/data/showinfo.tongchuang.com.showinfo/databases";

    SQLiteDatabase database;
    public  SQLiteDatabase openDatabase(Context context){
        System.out.println("filePath:"+filePath);
        File jhPath=new File(filePath);
        if(jhPath.exists()){
            return SQLiteDatabase.openOrCreateDatabase(jhPath, null);
        }else{
            File path=new File(pathStr);
            if (path.mkdir()){
            }else{
            };
            try {
                InputStream is=context.getClass().getClassLoader().getResourceAsStream("assets/"+"tongchuanghaiyang1234.db");

                FileOutputStream fos=new FileOutputStream(jhPath);
                byte[] buffer=new byte[10240];
                int count = 0;
                while((count = is.read(buffer))>0){
                    fos.write(buffer,0,count);
                }
                fos.flush();
                fos.close();
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
            return openDatabase(context);
        }
    }
}

使用SQLdm类,完成数据库的创建

SQLdm s = new SQLdm();
db =s.openDatabase(getApplicationContext());
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();

这样我们的数据库中的数据,就已经存在了我们的程序中了,那么此时就可以就可以进行增删改查操作了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值