2010-03-10 65 views
232

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

原因:我想知道如何處理模式遷移。較新的SQLite版本支持「ALTER TABLE」SQL命令,這將使我不必複製數據,刪除表,重新創建表並重新插入數據。

+1

你仍然可能想copy-drop-recreate-reinsert; SQLite的ALTER TABLE功能不是很全面。 – 2010-04-28 22:42:09

+0

請選擇正確的答案,3.4.0不正確 – Noah 2011-01-19 01:24:29

+0

這不取決於您所運行的Android版本嗎?我的老myTouch上運行1.6版本的確可能會有SQLite 3.4.x,或者我的新版G2運行2.2版本的版本可能會更高。真正的答案是檢查你的手機。 – Eno 2011-01-21 19:06:17

回答

26
$ adb shell 
$ sqlite3 --version 
sqlite3 --version 
3.5.9 

相同的ADP1 1.6 & 2.1模擬器。

+0

它給了我:sqlite3:權限被拒絕 – Yar 2011-08-19 12:53:58

+0

工作對我來說很好。我打開cmd提示並導航到adb.exe所在的android文件夾。然後我輸入 – Pavenhimself 2013-09-17 08:00:39

+5

這兩個命令,在Nexus 4 KitKat上輸入「/ system/bin/sh:sqlite3:not found」。 – 2014-02-24 09:20:54

55

儘管文檔提供了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

在我的Nexus One與Android 2.2,我甚至得到3.6.22

+2

我想3.4.0是作爲最低版本#給出的 - 爲了便於攜帶,除非你有充分的理由這樣做,否則你可能不應該假設它的版本更高。 – Eno 2010-09-02 16:42:28

+2

當然,你是對的。但是如果你必須使用一些可以提高SQLite版本的性能的高級功能,那麼你可以使用代碼來查詢並最終根據部署的版本來切換查詢的種類:) – Juri 2010-09-02 19:01:20

+0

我的Droid與一個自定義的2.2 ROM也報告3.6 .22 – 2010-12-31 00:45:14

446

UPDATE 2016年10月:這裏是更新的官方文檔,其中包括在這個答案的要點鏈接:android.database.sqlite package-level javadoc

使用仿真器(ADB外殼的sqlite3 --version):

UPDATE :對不起,老年(SDK 18及更早版本)封裝級API的diff已經停止工作:https://issuetracker.google.com/issues/37048579

SQLite的3.19.4(出於某種原因3.19.4不sqlite的發行說明存在,所以鏈接到版本控制檢查插件,而不是! ) :

  • 27-8.1.0

SQLite的3.18.2

  • 26-8.0.0-O(注:O型測試版本使用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不存在FO r某種原因):

  • 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-Ice Cream Sandwich的
  • 14 -4.0-Ice Cream Sandwich的
  • 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.11)3.7.13

  • LG擎天柱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-Jelly Bean)的

的SQLite 3.7.6.3的(而不是3.6.22):

  • LG擎天柱溶膠E730 /的myTouch E739 /的myTouch Q C800(10-2.3.3-薑餅,GRJ22)
  • LG的Optimus武F100S/F100L(10-2.3.3-薑餅,RK39F)
  • LG的Optimus LTE TAG F120K/F120L(10 -2.3.3-薑餅,GRK39F)
  • LG的Optimus LTE L-01D(10-2.3.3-薑餅,GRJ90)
  • LG的Optimus淨P690b(10-2.3.3-薑餅,薑餅)
  • LG普拉達KU5400(10-2.3.3-薑餅,GWK74)
  • LG Prada的P940(10-2.3.3-薑餅,GWK74)
  • LG LU6200/SU640(10-2.3.3-薑餅,GRJ90)■

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二重奏(15- GT-S7562 | IMM76I.S7562XXBMD6)
  • 三星Galaxy Tab 7.7(15-GT-P6810 | IMM76D.ZSLP8)

的SQLite 3.7.0.1的(而不是3.6.22):

  • LG自尊MS910(10-2.3.3-薑餅,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):

  • 摩托羅拉後空翻MB300(7-2.1-埃克萊爾,ERD79)
  • 的Garmin-華碩nüvifoneA10/A50/Garminfone(7-2.1-埃克萊爾,ERE27)

注:ADB命令GE t SQLite版本僅適用於仿真器以及可用於sqlite3的設備:https://stackoverflow.com/a/3645800/444761

對於其他設備,請參閱Juri's answer

我已將一個Issue #58909添加到Android問題跟蹤器。如果您想支持,請爲此加分。

注意:如果您希望您的應用在所有Android版本中使用相同版本的SQLite,請考慮使用this 3rd party SQLite support library

+0

/system/bin/sh:sqlite3:未找到 這是根植Android 4.0.2設備 – 2012-05-21 12:35:47

+0

感謝馬克。我有點困惑。雖然開發如何確保我的sqlite版本在所有設備上保持一致?我的意思是'targetSdkVersion'或'buildTarget'對此有影響嗎? – 2014-10-21 04:26:46

+0

@MuhammadBabar您需要使用Juri的答案來獲取用戶設備上安裝的SQLite的實際版本。 targetSdkVerson和buildTarget沒有區別。 – 2014-10-21 05:16:14

2

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

enter image description here

概覽是從馬克·卡特斯答案的鏈接。