ฉันไม่พบที่ที่ Android เก็บเวอร์ชันฐานข้อมูลไว้ในไฟล์ฐานข้อมูล SQLite เวอร์ชันฐานข้อมูลถูกเก็บไว้ที่ใดกันแน่?
ฉันไม่พบที่ที่ Android เก็บเวอร์ชันฐานข้อมูลไว้ในไฟล์ฐานข้อมูล SQLite เวอร์ชันฐานข้อมูลถูกเก็บไว้ที่ใดกันแน่?
คำตอบ:
คุณสามารถอ่านเวอร์ชันโดยใช้android.database.sqlite.SQLiteDatabase.getVersion()
ไฟล์.
ภายในวิธีนี้เรียกใช้คำสั่ง SQL " PRAGMA user_version
" ผมได้ว่าจากรหัสที่มาของ Android
ในไฟล์ฐานข้อมูลเวอร์ชันจะถูกเก็บไว้ที่ byte offset 60 ในส่วนหัวฐานข้อมูลของไฟล์ฐานข้อมูลในฟิลด์ 'คุกกี้ผู้ใช้'
หากมีคนกำลังมองหารหัส 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();
}