Android中使用的SQLite版本是什么?
原因:我想知道如何处理架构迁移。更新的SQLite版本支持“ALTER TABLE”SQL命令,这将使我无需复制数据、删除表、重新创建表和重新插入数据。
Android中使用的SQLite版本是什么?
原因:我想知道如何处理架构迁移。更新的SQLite版本支持“ALTER TABLE”SQL命令,这将使我无需复制数据、删除表、重新创建表和重新插入数据。
onCreate()
方法中设置一个断点,并在Evaluate Expression...
中使用此代码):val version = android.database.sqlite.SQLiteDatabase.create(null).use {
android.database.DatabaseUtils.stringForQuery(it, "SELECT sqlite_version()", null)
};
"Framework (API ${android.os.Build.VERSION.SDK_INT}) SQLite version: $version".also { println(it) }
API level* | Version | Name | SQLite | Notes |
---|---|---|---|---|
34 | 14 | U | 3.39.2 | RIGHT and FULL OUTER JOIN |
33 | 13 | T | 3.32.2 | |
32 | 12L | Sv2 | 3.32.2 | |
31 | 12 | S | 3.32.2 | |
30 | 11 | R | 3.28.0 | window functions |
29 | 10 | Q | 3.22.0 | |
28 | 9 | Pie | 3.22.0 | |
27 | 8.1 | Oreo | 3.19.4 | see 3.19.3 and version control check-ins because 3.19.4 link does not exist |
26 | 8.0 | Oreo | 3.18.2 | O beta versions used 3.18.0 |
25 | 7.1.1 | Nougat | 3.9.2 | |
24 | 7.0 | Nougat | 3.9.2 | |
23 | 6.0 | Marshmallow | 3.8.10.2 | M Preview 1 (SDK level 22) used 3.8.10 |
22 | 5.1.1 | Lollipop | 3.8.6.1 | see 3.8.6 and version control check-ins because 3.8.6.1 link does not exist |
21 | 5.0 | Lollipop | 3.8.6 | |
20 | 4.4W.2 | Android Wear | unknown | no emulator available, but probably either 3.7.11 or 3.8.4.3 |
19 | 4.4 | KitKat | 3.7.11 | |
18 | 4.3 | Jelly Bean | 3.7.11 | |
17 | 4.2 | Jelly Bean | 3.7.11 | |
16** | 4.1 | Jelly Bean | 3.7.11 | |
15 | 4.0.3 | Ice Cream Sandwich | 3.7.4 | |
14** | 4.0 | Ice Cream Sandwich | 3.7.4 | |
13 | 3.2 | Honeycomb | 3.7.4 | |
12 | 3.1 | Honeycomb | 3.7.4 | |
11** | 3.0 | Honeycomb | 3.7.4 | |
10 | 2.3.3 | Gingerbread | 3.6.22 | |
9 | 2.3.1 | Gingerbread | 3.6.22 | |
8** | 2.2 | Froyo | 3.6.22 | |
7 | 2.1 | Eclair | 3.5.9 | |
4 | 1.6 | Donut | 3.5.9 | |
3** | 1.5 | Cupcake | 3.5.9 |
targetSdkVersion
或 buildTarget
是否会对此产生影响? - Muhammad Babar尽管文档给出了3.4.0作为参考版本号,但是如果你执行以下SQL语句,你会发现SQLite安装的版本号要高得多:
Cursor cursor = SQLiteDatabase.create(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。
DatabaseUtils.dumpCursorToString(openOrCreate...)
一次性完成快速检查。 - TWiStErRob$ adb shell sqlite3 --version
3.5.9
在 ADP1 1.6 和 2.1 模拟器上同样表现相同。
在 Room 中,您可以查询:
SELECT sqlite_version()
RG