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

来源:互联网 发布:手机可以做淘宝网店吗 编辑:程序博客网 时间:2024/05/01 04:43

当我们使用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 classSQLdm {
    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=newFileOutputStream(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 = newSQLdm();
db =s.openDatabase(getApplicationContext());
daoMaster = newDaoMaster(db);
daoSession = daoMaster.newSession();

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

0 0
原创粉丝点击