当前位置:  开发笔记 > 数据库 > 正文

Android中使用的SQLite版本?

如何解决《Android中使用的SQLite版本?》经验,为你挑选了4个好方法。

Android中使用的SQLite版本是什么?

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



1> Mark..:

2016年10月更新:这是更新的官方文档的链接,其中包括此答案中的要点:android.database.sqlite包级别的javadoc

使用模拟器(adb shell sqlite3 --version):

更新:对不起,较旧的(SDK 18及更早版本)软件包级API差异已停止工作:https://issuetracker.google.com/issues/37048579

SQLite 3.22.0:

28 -9.0-P(SDK Manager中的修订版5)

SQLite 3.19.4(由于某种原因3.19.4在sqlite发行说明中不存在!所以链接到版本控制签入代替):

27 -8.1.0-O MR1

SQLite 3.18.2:

26-8.0.0-O(注意:O beta版本使用3.18.0)

SQLite 3.9.2:

25-7.1.1-N MR1

24 -7.0-N(注意:预览使用相同版本)

SQLite 3.8.10.2:

23-6.0-M(注:M预览1(SDK级别22)使用3.8.10)

SQLite 3.8.6.1(SQLite链接用于3.8.6,因为3.8.6.1由于某种原因不存在):

22-5.1.1,棒棒糖

SQLite 3.8.6:

21-5.0-棒棒糖

SQLite(未知):

20-4.4W.2-Android Wear(没有可用的模拟器,但可能是3.7.11或3.8.4.3)

SQLite 3.7.11:

19-4.4-奇巧

18-4.3-果冻豆

17-4.2-果冻豆

16 -4.1-果冻豆

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-埃克莱尔

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-果冻豆)

LG G2 D802 LG-D802 | JDQ39B(17-4.2-果冻豆)

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的回答.

我在Android问题跟踪器中添加了问题#58909.如果你想支持它,请为此加星标.

注意:如果您希望您的应用在所有Android版本中使用相同版本的SQLite,请考虑使用此第三方SQLite支持库.



2> Juri..:

尽管文档提供了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.


我想3.4.0作为最低版本#给出 - 为了便携性你可能不应该假设它更高版本,除非你有一个非常好的理由这样做.
当然,你是对的.但是,如果必须使用一些可能提高更高SQLite版本性能的高级功能,您可以使用代码查询并最终根据部署的版本切换查询类型:)

3> yanchenko..:
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9

在ADP1 1.6和2.1仿真器上也是如此.


在Nexus 4 KitKat上给出"/ system/bin/sh:sqlite3:not found".

4> Petterson..:

Andorid API和受支持的SQLite版本的简短概述。

概述来自Mark Carters答案中的链接。

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有