概述
我们在写一个项目的时候,可能需要一些原始数据,用来app查询数据。这儿有一个内置数据库文件的类,来实现原始数据查询。首先得先有一个原始数据的.db文件。我们可以通过使用SQLite expert工具来创建一个数据库文件。然后将数据库文件放在android项目的assets文件夹下。在使用下面这个类,就能实现我们需要的功能了。
package com.zwinsoft.voice.tool;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.content.res.AssetManager;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
/**
* 这个类就是实现从assets目录读取数据库文件然后写入SDcard中,
* 如果在SDcard中存在,就打开数据库,不存在就从assets目录下复制过去
* @author wangjian
*
*/
public class SQLiteDbManager {
//数据库存储路径
String filePath = "data/data/com.zwinsoft.voice/Voice_2.db";
// 数据库存放的文件夹 data/data/com.zwinsoft.voice 下面
String pathStr = "data/data/com.zwinsoft.voice";
SQLiteDatabase database;
public SQLiteDatabase openDatabase(Context context) {
System.out.println("filePath:" + filePath);
File jhPath = new File(filePath);
// 查看数据库文件是否存在
if (jhPath.exists()) {
Log.i("Voice", "存在数据库");
// 存在则直接返回打开的数据库
return SQLiteDatabase.openOrCreateDatabase(jhPath, null);
} else {
// 不存在先创建文件夹
File path = new File(pathStr);
Log.i("Voice", "pathStr=" + path);
if (path.mkdir()) {
Log.i("Voice", "创建成功");
} else {
Log.i("Voice", "创建失败");
}
try {
// 得到资源
AssetManager am = context.getAssets();
// 得到数据库的输入流
InputStream is = am.open("Voice_2.db");
Log.i("Voice", is + "");
// 用输出流写到SDcard上面
FileOutputStream fos = new FileOutputStream(jhPath);
Log.i("Voice", "fos=" + fos);
Log.i("Voice", "jhPath=" + jhPath);
// 创建byte数组 用于1KB写一次
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) > 0) {
Log.i("Voice", "得到");
fos.write(buffer, 0, count);
}
// 最后关闭就可以了
fos.flush();
fos.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
// 如果没有这个数据库 我们已经把他写到SD卡上了,然后在执行一次这个方法 就可以返回数据库了
return openDatabase(context);
}
}
}
调用openDatabase()方法就可以返回一个SQLiteDatabase。
最后
以上就是微笑蜡烛为你收集整理的android 将已经有数据的数据库文件导入项目的全部内容,希望文章能够帮你解决android 将已经有数据的数据库文件导入项目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复