/**打开数据库连接,如果数据库不存在,则从资源文件夹下的raw文件夹导入库
*
* @param dbfile 系统存储数据库的路径
*
* */
private SQLiteDatabase openDatabase(String dbfile) throws Exception{
try {
File file = new File(DB_PATH);
if(!file.exists()){
file.mkdir();
}
if (!(new File(dbfile).exists())) { //判断数据库文件是否存在,若不存
在则执行导入,否则直接打开数据库
Log.v(TAG, '从资源文件中导入数据库文件');
InputStream is = this.context.getResources().openRawResource(
R.raw.database); //欲导入的数据库
FileOutputStream fos = new FileOutputStream(dbfile);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase
(dbfile,null);
return db;
} catch (FileNotFoundException e) {
Log.e(TAG, '导入数据失败:'+e.getMessage());
throw e;
} catch (IOException e) {
Log.e(TAG, '导入数据失败:'+e.getMessage());
throw e;
}
}
DB_PATH是android保存应用的数据库文件的目录,是固定的/data/data/应用完整包
名/databases/,
dbfile这个参数,就是DB_PATH + 数据库名称。
另外,这个方法写的不是很好,只能把数据库名称命名为database.db,并放在res/raw
目录下才能成功导入,如果不想放到这个目录下,lz可以自己修改以上方法~原理很简单,
就是把res/raw/database文件复制到DB_PATH目录下而已。
还有火狐创建的sqlite数据库是以.sqlite为后缀 ,最好改成.db,以前我直接导
入.sqlite文件,好像出错了,名字改了就OK
说了一堆,希望能解决你的问题,另外,lz能不能分享下你是如何把excel工作表中的数据导入到data.sqlite中的呢,嘿嘿