Không cần phải làm bất cứ điều gì phức tạp, thay vào đó chỉ cần lưu tệp SQLiteDatabase.
Về cơ bản, hãy đóng Room db rồi lưu tệp.
ví dụ. sau đây là một ví dụ rất thô sơ lưu vào thư mục tải xuống trong một thư mục con có tên là DBsaves:-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resetSequenceAction();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
verifyStoragePermissions(this);
}
}
@Override
protected void onStart() {
super.onStart();
mTestDB = Room.databaseBuilder(this,TestDatabase.class,TestDatabase.DBNAME).build();
addSomeData();
addSomeData();
addSomeData();
addSomeData();
mTestDB.close();
File dbfile = this.getDatabasePath(TestDatabase.DBNAME);
File sdir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"DBsaves");
String sfpath = sdir.getPath() + File.separator + "DBsave" + String.valueOf(System.currentTimeMillis());
if (!sdir.exists()) {
sdir.mkdirs();
}
File savefile = new File(sfpath);
try {
savefile.createNewFile();
int buffersize = 8 * 1024;
byte[] buffer = new byte[buffersize];
int bytes_read = buffersize;
OutputStream savedb = new FileOutputStream(sfpath);
InputStream indb = new FileInputStream(dbfile);
while ((bytes_read = indb.read(buffer,0,buffersize)) > 0) {
savedb.write(buffer,0,bytes_read);
}
savedb.flush();
indb.close();
savedb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void verifyStoragePermissions(Activity activity) {
final int REQUEST_EXTERNAL_STORAGE = 1;
String[] PERMISSIONS_STORAGE = {
//Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
int permission = ActivityCompat.checkSelfPermission(
activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if(permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
-
Lưu ý rằng các phương thức onCreate và verifyStoragePermissions chỉ được bao gồm để có quyền ghi vào bộ nhớ ngoài (lưu ý rằng quyền của người dùng cũng được đặt trong tệp kê khai).
- Việc nhập là thực hiện việc này bên ngoài Room (tương tự như vậy nếu bạn khôi phục từ bản sao lưu).
Sau khi chạy:-
Và sau đó sao chép tệp vào PC và mở bằng Trình quản lý SQLite:-
Điều này hoàn toàn như mong đợi và như được hiển thị có tính di động cao, tức là bạn có thể thả nó vào bất kỳ công cụ SQLite nào (Phiên bản SQLite được sử dụng bởi một công cụ như vậy có thể là một yếu tố hạn chế)