先切换到project目录下
选择main目录,新建assets文件
新建文件之后,把数据库拷贝到assets目录下。
然后就开始拷贝数据库到系统默认路径下。
//拷贝数据库,并且使用数据库
public class DbManager {
private static final String DB_NAME = "wordlist.db";
private static final String PACKAGE_NAME = "com.example.wordhub";
public static final String DB_PATH = "/data/data/" + PACKAGE_NAME + "/databases"; //数据库的绝对路径
private SQLiteDatabase db;
private Context context;
/**
* @param context Context 上下文
*/
public DbManager(Context context) {
this.context = context;
}
//对外提供拷贝数据库方法
public void openDataBase() {
this.db = openDataBase(DB_PATH + "/" + DB_NAME);
}
//获取打开的数据库
public SQLiteDatabase getDb() {
return db;
}
/**
* 拷贝数据库的方法
*
* @param filePath String 数据库默认存储路径
* @return SQLiteDatabase 返回数据库实例
* @throws FileNotFoundException 找不到文件则抛出异常
* @throws IOException 输入输出流错误,则抛出异常
*/
private SQLiteDatabase openDataBase(String filePath) {
try {
File file = new File(DB_PATH);
if (!file.exists()) {
file.mkdir(); //如果文件目录不存在就创建此文件目录
}
File openfile = new File(filePath);
if (!openfile.exists()) {
InputStream inputStream = context.getResources().getAssets().open("wordlist.db"); //获取数据库输入流
FileOutputStream fileOutputStream = new FileOutputStream(openfile); //文件输出流
byte[] buffer = new byte[1024];
int length = 0;
while ((length = inputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length); //拷贝数据库到默认路径下
}
inputStream.close(); //关闭输入流
fileOutputStream.close(); //关闭输出流
}
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(filePath, null); //打开数据库
return db;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
//关闭数据库
public void closeDataBase() {
if (db != null) {
db.close();
}
}
}
拷贝成功之后,就可以愉快的使用啦,以下是使用方法。
DbManager manager = new DbManager(MyApplication.getContext());
Cursor cursor = null;
先要获取context,我这里获取的是全局的context,方法如下。
/**
* 获取全局context
*/
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
实例化成功之后就可以,调用openDataBase()拷贝数据库,再调用getDb()方法获取数据库实例。
manager.openDataBase();
SQLiteDatabase db = manager.getDb();
cursor = db.rawQuery("select * from Note", null);
最后别忘了关闭数据库
manager.closeDataBase();
cursor.close();