Android中使用的SQLite版本?

xoefb8l8  于 2023-04-10  发布在  Android
关注(0)|答案(5)|浏览(126)

Android中使用的SQLite版本是什么?
原因:我想知道如何处理模式迁移。较新的SQLite版本支持“ALTER TABLE”SQL命令,这将使我不必复制数据,删除表,重新创建表并重新插入数据。

5n0oy7gb

5n0oy7gb1#

以下是官方文档的链接,其中包括本答案中的要点:android.database.sqlite package-level javadoc
获取框架SQLite版本的Kotlin代码(提示:只需在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 *|版本|姓名|SQLite|注意事项|
| --------------|--------------|--------------|--------------|--------------|
| 三十四|十四岁|U|3.39.2|Android 14 Developer Preview 2. RIGHT和FULL OUTER JOIN|
| 33|十三|T|3.32.2||
| 三十二|12L|Sv2|3.32.2||
| 三十一|十二岁|S|3.32.2||
| 30|十一|R|3.28.0|window functions|
| 29|10个|Q|3.22.0||
| 28|九|派|3.22.0||
| 27|8.1|奥利奥|3.19.4|参见3.19.3version control check-ins,因为3.19.4链接不存在|
| 二十六|8.0|奥利奥|3.18.2|O使用的测试版3.18.0|
| 二十五|7.1.1|牛轧糖|3.9.2||
| 24|7.0|牛轧糖|3.9.2||
| 二十三|6.0|棉花糖|3.8.10.2|M Preview 1(SDK级别22)使用3.8.10|
| 二十二|5.1.1|棒棒糖|3.8.6.1|参见3.8.6version control check-ins,因为3.8.6.1链接不存在|
| 二十一|5.0|棒棒糖|3.8.6||
| 二十|4.4W.2|Android Wear|未知的|没有可用的模拟器,但可能是3.7.11或3.8.4.3|
| 十九岁|4.4|奇巧|3.7.11||
| 十八岁|4.3|果冻豆|3.7.11||
| 十七岁|4.2|果冻豆|3.7.11||
| 16
|4.1|果冻豆|3.7.11||
| 十五岁|4.0.3|冰淇淋三明治|3.7.4||
| 14|4.0|冰淇淋三明治|3.7.4||
| 十三|3.2|Hive|3.7.4||
| 十二岁|3.1|Hive|3.7.4||
| 11
|3.0|Hive|3.7.4||
| 10个|2.3.3|姜饼|3.6.22||
| 九|2.3.1|姜饼|3.6.22||
| 8|2.2|弗罗约|3.6.22||
| 七|2.1|埃克莱尔|3.5.9||
| 四|1.6|甜甜圈|3.5.9||
| 3
|一点五|纸杯蛋糕|3.5.9||

  • Android API级别的链接显示android.database.sqlite软件包的更改位置。如果没有链接(例如API级别17),则表示该软件包没有更改。
    **SDK链接断开,参见here

注意:如果您希望应用在所有Android版本中使用相同版本的SQLite,请考虑使用Requery的3rd party SQLite support librarySQLCipher(如果您还希望加密)。

byqmnocz

byqmnocz2#

尽管文档给出了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
在我的Nexus One与Android 2.2,我甚至得到3.6.22

piah890a

piah890a3#

$ adb shell sqlite3 --version 
3.5.9

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

oyt4ldly

oyt4ldly4#

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

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

rdlzhqv9

rdlzhqv95#

在房间中,您可以查询
SELECT sqlite_version()
RG

相关问题