Tôi không thể tìm thấy nơi Android lưu trữ phiên bản cơ sở dữ liệu trong tệp cơ sở dữ liệu SQLite. Chính xác thì phiên bản cơ sở dữ liệu được lưu trữ ở đâu?
Câu trả lời:
Bạn có thể đọc phiên bản bằng cách sử dụng android.database.sqlite.SQLiteDatabase.getVersion()
.
Bên trong, phương thức này thực thi câu lệnh SQL " PRAGMA user_version
". Tôi lấy nó từ mã nguồn Android .
Trong tệp cơ sở dữ liệu, phiên bản được lưu trữ ở byte offset 60 trong tiêu đề cơ sở dữ liệu của tệp cơ sở dữ liệu, trong trường 'cookie người dùng'.
Nếu ai đó đang tìm kiếm mã java để đọc phiên bản từ tệp:
private static int getDbVersionFromFile(File file) throws Exception
{
RandomAccessFile fp = new RandomAccessFile(file,"r");
fp.seek(60);
byte[] buff = new byte[4];
fp.read(buff, 0, 4);
return ByteBuffer.wrap(buff).getInt();
}