Android는 SQLite의 데이터베이스 버전을 어디에 저장합니까?


88

Android가 SQLite 데이터베이스 파일 내에서 데이터베이스 버전을 저장하는 위치를 찾을 수 없습니다. 데이터베이스 버전은 정확히 어디에 저장됩니까?

답변:


187

을 사용하여 버전을 읽을 수 있습니다 android.database.sqlite.SQLiteDatabase.getVersion().

내부적으로이 메서드는 SQL 문 " PRAGMA user_version"을 실행합니다 . Android 소스 코드 에서 가져 왔습니다 .

데이터베이스 파일에서 버전은 'user cookie'필드에있는 데이터베이스 파일 의 데이터베이스 헤더 에있는 바이트 오프셋 60에 저장됩니다 .


유용했지만 내 질문은이 버전 정보가 파일 시스템에 저장되는 위치 (또는 데이터베이스 파일에있을 수 있음)입니까?
bhups


데이터베이스 버전은 데이터베이스 파일에 어떻게 유지됩니까?
xuehui

@xuehui는 데이터베이스 파일에서 byte 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.