web-dev-qa-db-ja.com

Android= SQLiteのデータベースバージョンはどこに保存されますか?

AndroidがSQLiteデータベースファイル内のデータベースバージョンを保存する場所を見つけることができません。データベースバージョンは正確にどこに保存されますか?

87
bhups

Android.database.sqlite.SQLiteDatabase.getVersion()を使用してバージョンを読むことができます。

内部的に、このメソッドはSQLステートメント「 PRAGMA user_version "。 Androidソースコード から取得しました。

データベースファイルでは、バージョンはデータベースファイルの データベースヘッダー のフィールド 'user cookie'のバイトオフセット60に格納されます。

185
Thomas Mueller

誰かが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();
}
8
Rafal Malek