当我们使用greendao进行批量数据添加的时候,可以使用greendao提供的insert()方法,这个方法的使用范围适合在插入一条或者几条数据,只要原因在于的是,当我们使用greendao提供的insert()方法的时候,此时是需要进行new操作的,当我们进行new操作的时候,此时程序在运行的时候,此时的系统是要给当前的程序提供很多的内存空间,所以,根据尽量减少程序运行内存的原则,我们在程序中进行少使用new关键字,只要一是用new关键字,那么程序出现的症状,最突出的就是程序变得很卡,或者是出现死机的现象。
在Android Studio中读取外部数据库文件,此时是将数据库文件放到的是assets目录下,注意的是,这里的assets目录是与java、res目录是同级的,所以,我们在创建目录的时候要特别注意。
当创建完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();
这样我们的数据库中的数据,就已经存在了我们的程序中了,那么此时就可以就可以进行增删改查操作了。