Android中使用的SQLite版本是什么?
原因:我想知道如何处理模式迁移 . 较新的SQLite版本支持“ALTER TABLE”SQL命令,这将节省我不得不复制数据,删除表,重新创建表和重新插入数据 .
UPDATE OCT 2016 :这是更新的官方文档的链接,其中包括此答案中的要点:android.database.sqlite package-level javadoc
使用模拟器(adb shell sqlite3 --version):
更新:对不起,较旧的(SDK 18及更早版本)程序包级API差异已停止工作:https://issuetracker.google.com/issues/37048579
SQLite 3.22.0:
SQLite 3.19.4(由于某种原因3.19.4在sqlite发行说明中不存在!所以链接到版本控制签到代替):
SQLite 3.18.2:
SQLite 3.9.2:
25-7.1.1-N MR1
24 -7.0-N(注意:预览使用了相同的版本)
SQLite 3.8.10.2:
SQLite 3.8.6.1(SQLite链接适用于3.8.6,因为3.8.6.1由于某种原因不存在):
SQLite 3.8.6:
SQLite(未知):
SQLite 3.7.11:
19-4.4-KitKat
18-4.3-果冻 beans
17-4.2-果冻 beans
16 -4.1-果冻 beans
SQLite 3.7.4:
15-4.0.3-冰淇淋三明治
14 -4.0-冰淇淋三明治
13-3.2-蜂巢
12-3.1-蜂窝
11 -3.0-蜂窝
SQLite 3.6.22:
10-2.3.3-姜饼
9-2.3.1-姜饼
8 -2.2-Froyo
SQLite 3.5.9:
7-2.1-Eclair
4-1.6-甜甜圈
3 -1.5-蛋糕
注意:Android SDK级别链接显示android.database.sqlite包的更改位置 . 如果没有链接(例如SDK级别17),则表示该包没有更改 .
注意:这里有一些异常(列表并非详尽无遗):
SQLite 3.7.13(而不是3.7.11):
LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b(19-4.4-KitKat)
LG Optimus G E975 LG-E975 | JZO54K(16-4.1-果冻 beans )
LG G2 D802 LG-D802 | JDQ39B(17-4.2-Jelly Bean)
SQLite 3.7.6.3(而不是3.6.22):
LG Optimus Sol E730 / myTouch E739 / myTouch Q C800(10-2.3.3-Gingerbread,GRJ22)
LG Optimus Vu F100S / F100L(10-2.3.3-姜饼,RK39F)
LG Optimus LTE TAG F120K / F120L(10-2.3.3-Gingerbread,GRK39F)
LG Optimus LTE L-01D(10-2.3.3-Gingerbread,GRJ90)
LG Optimus Net P690b(10-2.3.3-姜饼,GINGERBREAD)
LG Prada KU5400(10-2.3.3-Gingerbread,GWK74)
LG Prada P940(10-2.3.3-Gingerbread,GWK74)
LG LU6200 / SU640(10-2.3.3-Gingerbread,GRJ90)s
SQLite 3.7.5(而不是3.7.4):
三星Galaxy Note(15-GT-N7000 | IML74K.ZSLPF)
三星Galaxy SII(15-SC-02C | IML74K.OMMP4和GT-I9100 | IML74K.DXLP7)
三星Galaxy S Duos(15-GT-S7562 | IMM76I.S7562XXBMD6)
三星Galaxy Tab 7.7(15-GT-P6810 | IMM76D.ZSLP8)
SQLite 3.7.0.1(而不是3.6.22):
LG Esteem MS910(10-2.3.3-Gingerbread,GSE-_v.05)
AndroTab(8-2.2-Froyo,1.0.7100.0385)
GPLUS MUSN M500(8-2.2-Froyo,FRG83G)
SQLite 3.6.23.1(而不是3.5.9):
摩托罗拉Backflip MB300(7-2.1-Eclair,ERD79)
Garmin-AsusnüvifoneA10/ A50 / Garminfone(7-2.1-Eclair,ERE27)
注意:获取SQLite版本的adb命令仅适用于仿真器和可用sqlite3的设备:https://stackoverflow.com/a/3645800/444761
对于其他设备,请参阅Juri's answer .
我在Android问题跟踪器中添加了Issue #58909 . 如果你想支持它,请为此加星标 .
注意:如果您希望您的应用在所有Android版本中使用相同版本的SQLite,请考虑使用this 3rd party SQLite support library .
$ adb shell $ sqlite3 --version sqlite3 --version 3.5.9
在ADP1 1.6和2.1仿真器上也是如此 .
尽管文档提供了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 .
Andorid API和受支持的SQLite版本的简短概述 .
概述来自Mark Carters答案中的链接 .
4 回答
UPDATE OCT 2016 :这是更新的官方文档的链接,其中包括此答案中的要点:android.database.sqlite package-level javadoc
使用模拟器(adb shell sqlite3 --version):
更新:对不起,较旧的(SDK 18及更早版本)程序包级API差异已停止工作:https://issuetracker.google.com/issues/37048579
SQLite 3.22.0:
SQLite 3.19.4(由于某种原因3.19.4在sqlite发行说明中不存在!所以链接到版本控制签到代替):
SQLite 3.18.2:
SQLite 3.9.2:
25-7.1.1-N MR1
24 -7.0-N(注意:预览使用了相同的版本)
SQLite 3.8.10.2:
SQLite 3.8.6.1(SQLite链接适用于3.8.6,因为3.8.6.1由于某种原因不存在):
SQLite 3.8.6:
SQLite(未知):
SQLite 3.7.11:
19-4.4-KitKat
18-4.3-果冻 beans
17-4.2-果冻 beans
16 -4.1-果冻 beans
SQLite 3.7.4:
15-4.0.3-冰淇淋三明治
14 -4.0-冰淇淋三明治
13-3.2-蜂巢
12-3.1-蜂窝
11 -3.0-蜂窝
SQLite 3.6.22:
10-2.3.3-姜饼
9-2.3.1-姜饼
8 -2.2-Froyo
SQLite 3.5.9:
7-2.1-Eclair
4-1.6-甜甜圈
3 -1.5-蛋糕
注意:Android SDK级别链接显示android.database.sqlite包的更改位置 . 如果没有链接(例如SDK级别17),则表示该包没有更改 .
注意:这里有一些异常(列表并非详尽无遗):
SQLite 3.7.13(而不是3.7.11):
LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b(19-4.4-KitKat)
LG Optimus G E975 LG-E975 | JZO54K(16-4.1-果冻 beans )
LG G2 D802 LG-D802 | JDQ39B(17-4.2-Jelly Bean)
SQLite 3.7.6.3(而不是3.6.22):
LG Optimus Sol E730 / myTouch E739 / myTouch Q C800(10-2.3.3-Gingerbread,GRJ22)
LG Optimus Vu F100S / F100L(10-2.3.3-姜饼,RK39F)
LG Optimus LTE TAG F120K / F120L(10-2.3.3-Gingerbread,GRK39F)
LG Optimus LTE L-01D(10-2.3.3-Gingerbread,GRJ90)
LG Optimus Net P690b(10-2.3.3-姜饼,GINGERBREAD)
LG Prada KU5400(10-2.3.3-Gingerbread,GWK74)
LG Prada P940(10-2.3.3-Gingerbread,GWK74)
LG LU6200 / SU640(10-2.3.3-Gingerbread,GRJ90)s
SQLite 3.7.5(而不是3.7.4):
三星Galaxy Note(15-GT-N7000 | IML74K.ZSLPF)
三星Galaxy SII(15-SC-02C | IML74K.OMMP4和GT-I9100 | IML74K.DXLP7)
三星Galaxy S Duos(15-GT-S7562 | IMM76I.S7562XXBMD6)
三星Galaxy Tab 7.7(15-GT-P6810 | IMM76D.ZSLP8)
SQLite 3.7.0.1(而不是3.6.22):
LG Esteem MS910(10-2.3.3-Gingerbread,GSE-_v.05)
AndroTab(8-2.2-Froyo,1.0.7100.0385)
GPLUS MUSN M500(8-2.2-Froyo,FRG83G)
SQLite 3.6.23.1(而不是3.5.9):
摩托罗拉Backflip MB300(7-2.1-Eclair,ERD79)
Garmin-AsusnüvifoneA10/ A50 / Garminfone(7-2.1-Eclair,ERE27)
注意:获取SQLite版本的adb命令仅适用于仿真器和可用sqlite3的设备:https://stackoverflow.com/a/3645800/444761
对于其他设备,请参阅Juri's answer .
我在Android问题跟踪器中添加了Issue #58909 . 如果你想支持它,请为此加星标 .
注意:如果您希望您的应用在所有Android版本中使用相同版本的SQLite,请考虑使用this 3rd party SQLite support library .
在ADP1 1.6和2.1仿真器上也是如此 .
尽管文档提供了3.4.0作为参考编号,但如果执行以下sql,您会注意到安装了更多的SQlite:
这只是一段快速,脏的代码来检索sqlite版本 . 例如在使用Android 2.1的HTC Hero上,我得到: 3.5.9 .
在我的带有Android 2.2的Nexus One上,我甚至得到 3.6.22 .
Andorid API和受支持的SQLite版本的简短概述 .
概述来自Mark Carters答案中的链接 .