Android가 SQLite 데이터베이스 파일 내에서 데이터베이스 버전을 저장하는 위치를 찾을 수 없습니다. 데이터베이스 버전은 정확히 어디에 저장됩니까?
답변
을 사용하여 버전을 읽을 수 있습니다 android.database.sqlite.SQLiteDatabase.getVersion()
.
내부적으로이 메서드는 SQL 문 ” PRAGMA user_version
“을 실행합니다 . Android 소스 코드 에서 가져 왔습니다 .
데이터베이스 파일에서 버전은 ‘user cookie’필드에있는 데이터베이스 파일 의 데이터베이스 헤더 에있는 바이트 오프셋 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();
}