android 导入数据库到项目中

    在android开发中,通常都是自己创建数据库然后开始开发使用,但难免会用别人做好的数据库中的数据,我们该怎么使用呢?

    step1:

        在module中创建一个assets目录

    android 导入数据库到项目中

    step2:

        将数据库复制到assets目录下

   android 导入数据库到项目中

step3:

    为了保护数据库文件,将test.db文件复制到自己包名下的数据库文件夹下

public static String DB_PATH = "/data/data/com.test.aaa/" + "databases/";
public static String SRC_DB_FILE_NAME = "test.db";
private SQLiteDatabase readDb() {
    File dir = new File(Constants.DB_PATH);
    if (!dir.exists()) {
        dir.mkdir();
    }

    String srcDbName = Constants.DB_PATH + Constants.SRC_DB_FILE_NAME;

    try {
        LogUtils.i("start copy file ");
        InputStream inputStream = getResources().getAssets().open(assetFileName);
        FileOutputStream fos = new FileOutputStream(srcDbName);
        byte[] buf = new byte[1024 * 8];
        int len = 0;
        while ((len = inputStream.read(buf)) != -1) {
            fos.write(buf, 0, len);
        }
        fos.close();
        inputStream.close();
        LogUtils.i("finish copy file ");
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(srcDbName, null);
        return database;
    } catch (IOException e) {
        e.printStackTrace();
        LogUtils.e("copy file is error " + e.toString());
        return null;
    }
}

step4:

    根据上面的方法可以拿到SQLiteDatabase  db对象,然后进行增删改查炒作,例如:

public ArrayList<DBBean> query(SQLiteDatabase db){
    ArrayList<DBBean> list = new ArrayList<>();
   String spl = "select * from " + Constants.TABLE_NAME;
    Cursor cursor = db.rawQuery(spl, null);
    int count = cursor.getCount();
    LogUtils.i("db cursor count is " + count);
    while (cursor.moveToNext()){
        String _id = cursor.getString(0);
        int test = cursor.getInt(1);
        String filePath = cursor.getString(2);
        list.add(new DBBean(_id,test,filePath));
    }
    cursor.close();
    LogUtils.i("read all from src db finish ");
    return list;
}
这就是android导入外部数据库的基本操作!