Android เก็บเวอร์ชันฐานข้อมูลของ SQLite ไว้ที่ไหน


88

ฉันไม่พบที่ที่ Android เก็บเวอร์ชันฐานข้อมูลไว้ในไฟล์ฐานข้อมูล SQLite เวอร์ชันฐานข้อมูลถูกเก็บไว้ที่ใดกันแน่?

คำตอบ:


188

คุณสามารถอ่านเวอร์ชันโดยใช้android.database.sqlite.SQLiteDatabase.getVersion()ไฟล์.

ภายในวิธีนี้เรียกใช้คำสั่ง SQL " PRAGMA user_version" ผมได้ว่าจากรหัสที่มาของ Android

ในไฟล์ฐานข้อมูลเวอร์ชันจะถูกเก็บไว้ที่ byte offset 60 ในส่วนหัวฐานข้อมูลของไฟล์ฐานข้อมูลในฟิลด์ 'คุกกี้ผู้ใช้'


มีประโยชน์ แต่คำถามของฉันคือข้อมูลเวอร์ชันนี้จะถูกเก็บไว้ที่ใดในระบบไฟล์ (หรืออาจอยู่ในไฟล์ฐานข้อมูล)
bhups

3
และหากต้องการอ่านและแก้ไขstackoverflow.com/questions/8030779/…
Yaroslav Mytkalyk

เวอร์ชันของฐานข้อมูลยังคงอยู่ในไฟล์ฐานข้อมูลได้อย่างไร
xuehui

@xuehui ดูคำตอบ: ไบต์ 60 ในไฟล์ฐานข้อมูล
Thomas Mueller

8

หากมีคนกำลังมองหารหัส java เพื่ออ่านเวอร์ชันจากไฟล์:

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();
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.