Android使用的SQLite版本是什么?

原因:我想知道如何处理模式迁移。新的SQLite版本支持“ALTER TABLE”SQL命令,这将节省我必须复制数据,删除表,重新创建表和重新插入数据。


当前回答

在房间里你可以查询

选择sqlite_version ()

RG

其他回答

在房间里你可以查询

选择sqlite_version ()

RG

android api和支持的SQLite版本的简短概述。

概述来自Mark carter回答中的链接。

$ adb shell sqlite3 --version 
3.5.9

ADP1 1.6和2.1模拟器也一样。

虽然文档给出了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。

这里有一个官方文档的链接,其中包括这个答案的要点:android.database.sqlite包级javadoc

Kotlin代码获得框架SQLite版本(提示:只需在Activity 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) }

使用模拟器(注意,实际设备上的SQLite版本至少是指定的):

API level* Version Name SQLite Notes
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

* Android API级别链接显示Android .database.sqlite包已更改的位置。如果没有链接(例如API级别17),则表示没有对该包进行更改。

**破碎的SDK链接,看这里

注意:如果你想让你的应用在所有Android版本上使用相同版本的SQLite,可以考虑使用Requery的第三方SQLite支持库或SQLCipher(如果你还想加密)。