Android lưu trữ phiên bản cơ sở dữ liệu của SQLite ở đâu?


88

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:


187

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'.


điều đó rất hữu ích, nhưng câu hỏi của tôi là thông tin phiên bản này được lưu trữ ở đâu trên hệ thống tệp (hoặc có thể trong tệp cơ sở dữ liệu)?
bhups

3
Và để đọc và sửa đổi nó stackoverflow.com/questions/8030779/...
Yaroslav Mytkalyk

phiên bản cơ sở dữ liệu được lưu vào tệp cơ sở dữ liệu như thế nào?
xuehui

@xuehui xem câu trả lời: byte 60 trong tệp cơ sở dữ liệu.
Thomas Mueller

8

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();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.