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


88

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

回答:


187

を使用してバージョンを読み取ることができますandroid.database.sqlite.SQLiteDatabase.getVersion()

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

データベースファイルのバージョンは、データベースファイルのデータベースヘッダーの「ユーザーCookie」フィールドのバイトオフセット60に格納されます。


それは便利でしたが、私の質問は、このバージョン情報がファイルシステムのどこに保存されるのか(またはデータベースファイル内にあるのか)です。
bhups

3
そして、それを読んで変更するには、stackoverflow.com
questions / 8030779 /…

データベースのバージョンはデータベースファイルにどのように保持されますか?
xuehui 2017

@xuehuiは回答を参照してください:データベースファイルのバイト60。
トーマス・ミューラー

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.