Android中使用的SQLite版本是什么?
原因:我想知道如何处理架构迁移。较新的SQLite版本支持“ ALTER TABLE” SQL命令,这将使我不必复制数据,删除表,重新创建表和重新插入数据。
Android中使用的SQLite版本是什么?
原因:我想知道如何处理架构迁移。较新的SQLite版本支持“ ALTER TABLE” SQL命令,这将使我不必复制数据,删除表,重新创建表和重新插入数据。
Answers:
2016年10月更新:这是更新的官方文档的链接,其中包含此答案的要点:android.database.sqlite包级Javadoc
使用仿真器:
adb shell sqlite3 --version
更新:自SDK 29(仿真器修订版8)以来,adb shell命令提供:
/system/bin/sh: sqlite3: inaccessible or not found
有什么想法吗?问题追踪器在这里。
SQLite 3.22.0:
SQLite 3.19.4(由于某些原因,sqlite发行说明中不存在3.19.4!因此,请链接到版本控制签入):
SQLite 3.18.2:
SQLite 3.9.2:
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:
SQLite 3.7.4:
SQLite 3.6.22:
SQLite 3.5.9:
注意:Android SDK级别的链接显示了android.database.sqlite软件包已更改的位置。如果没有链接(例如,SDK级别17),则表示对该程序包无更改。
注意:以下是一些异常现象(绝不详尽):
SQLite 3.7.13(而不是3.7.11):
SQLite 3.7.6.3(而不是3.6.22):
SQLite 3.7.5(而不是3.7.4):
SQLite 3.7.0.1(而不是3.6.22):
SQLite 3.6.23.1(而不是3.5.9):
注意:要获取SQLite版本的adb命令仅在模拟器和具有sqlite3可用的设备上有效:https : //stackoverflow.com/a/3645800/444761
对于其他设备,请参阅Juri的答案。
我已将问题#58909添加到Android问题跟踪器。如果您想支持它,请加注星标。
注意:如果您希望您的应用在所有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仿真器相同。