Androidで使用されているSQLiteのバージョンは何ですか?
理由:スキーマの移行を処理する方法を知りたいです。新しいSQLiteバージョンは、「ALTER TABLE」SQLコマンドをサポートしています。これにより、データのコピー、テーブルの削除、テーブルの再作成、データの再挿入の手間が省けます。
Androidで使用されているSQLiteのバージョンは何ですか?
理由:スキーマの移行を処理する方法を知りたいです。新しいSQLiteバージョンは、「ALTER TABLE」SQLコマンドをサポートしています。これにより、データのコピー、テーブルの削除、テーブルの再作成、データの再挿入の手間が省けます。
回答:
2016年10月更新:これは、この回答の要点を含む更新された公式ドキュメントへのリンクです。android.database.sqliteパッケージレベルのjavadoc
エミュレーターの使用:
adb shell sqlite3 --version
更新:SDK 29(エミュレータリビジョン8)以降、adbシェルコマンドは以下を提供します:
/system/bin/sh: sqlite3: inaccessible or not found
何かアイデアはありますか?ここに問題トラッカー。
SQLite 3.22.0:
SQLite 3.19.4(何らかの理由で3.19.4がsqliteリリースノートに存在しない!バージョンコントロールチェックインにリンクする):
SQLite 3.18.2:
SQLite 3.9.2:
SQLite 3.8.10.2:
SQLite 3.8.6.1(何らかの理由で3.8.6.1が存在しないため、SQLiteリンクは3.8.6用です):
SQLite 3.8.6:
SQLite(不明):
SQLite 3.7.11:
SQLite 3.7.4:
SQLite 3.6.22:
SQLite 3.5.9:
注:Android SDKレベルのリンクは、android.database.sqliteパッケージが変更された場所を示します。リンクがない場合(SDKレベル17など)は、そのパッケージに変更がないことを示します。
注:ここにいくつかの異常があります(決して網羅的ではありません)。
SQLite 3.7.5(3.7.4の代わり):
SQLite 3.6.23.1(3.5.9の代わり):
注:SQLiteバージョンを取得するadbコマンドは、エミュレーターと、sqlite3が利用可能なデバイスでのみ機能します:https ://stackoverflow.com/a/3645800/444761
他のデバイスについては、Juriの回答を参照してください。
Android Issue TrackerにIssue#58909を追加しました。サポートしたい場合は、スターを付けてください。
注:アプリですべてのAndroidバージョンで同じバージョンのSQLiteを使用する場合は、このサードパーティのSQLiteサポートライブラリの使用を検討してください。
targetSdkVersion
それbuildTarget
はどういう意味ですか、またはそれに影響を与えますか?
ドキュメントには参照番号として3.4.0が記載されていますが、次のsqlを実行すると、インストールされているSQliteの数がはるかに多いことがわかります。
Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null);
String sqliteVersion = "";
while(cursor.moveToNext()){
sqliteVersion += cursor.getString(0);
}
これは、sqliteのバージョンを取得するための簡単で汚れたコードのほんの一部です。たとえば、Android 2.1を搭載したHTC Heroでは、3.5.9を取得します。
Android 2.2を搭載したNexus Oneでは、3.6.22も取得します。
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9
ADP1 1.6および2.1エミュレータでも同じです。