Android'de kullanılan SQLite sürümü?


271

Android'de kullanılan SQLite sürümü nedir?

Sebep: Şema taşıma işlemlerini nasıl yapacağınızı merak ediyorum. Daha yeni SQLite sürümleri, verileri kopyalamak, tabloyu bırakmak, tabloyu yeniden oluşturmak ve verileri yeniden eklemek zorunda kalmamı sağlayan bir "ALTER TABLE" SQL komutunu destekler.


1
Yine de kopyala-bırak-yeniden oluştur-yeniden yerleştir; SQLite'ın ALTER TABLE özelliği tam özellikli değildir.
J. Polfer

Lütfen doğru cevabı seçin, 3.4.0 doğru değil
Noah

1
Bu, çalıştırdığınız Android sürümüne bağlı değil mi? Gerçekten 1.6 çalışan eski myTouch SQLite 3.4.x olabilir VEYA 2.2 çalışan yeni G2 daha yüksek bir sürüm olabilir. Gerçek cevap sizin özel yakışıklı olup olmadığını kontrol etmektir.
Eno

Android.arch.persistence: db ve android.arch.persistence: db-framework'ün bir kaç hafta önce gönderildi.
Prags

Yanıtlar:


478

GÜNCELLEME EKİM 2016 : İşte bu cevabın ana noktalarını içeren güncellenmiş resmi dokümanlara bir link: android.database.sqlite paket seviyesi javadoc

Emülatörlerin kullanılması:

adb shell sqlite3 --version   

GÜNCELLEME: SDK 29'dan (emülatör revizyonu 8) beri, adb shell komutu şunları verir:

/system/bin/sh: sqlite3: inaccessible or not found

Neden herhangi bir fikir? İzleyiciyi buradan yayınlayın .

SQLite 3.28.0 ( pencere fonksiyonları !):

  • 30-11.0-R (SDK Yöneticisinde Revizyon 2)

SQLite 3.22.0 :

  • 29 -10.0-S (YGS Yöneticisi revizyon 8)
  • 28 -9.0-P

SQLite 3.19.4 (herhangi bir nedenden dolayı 3.19.4 sqlite sürüm notlarında mevcut değildir! Bunun yerine sürüm kontrolü check-in'lerine bağlantı):

  • 27 -8.1.0-O MR1

SQLite 3.18.2 :

  • 26-8.0.0-O (not: O beta sürümleri kullanıldı 3.18.0 )

SQLite 3.9.2 :

  • 25-7.1.1-N MR1
  • 24 -7.0-N (not: önizlemeler aynı sürümü kullandı)

SQLite 3.8.10.2 :

  • 23-6.0-M (not: M Önizleme 1 (SDK seviye 22) kullanıldı 3.8.10 )

SQLite 3.8.6.1 (SQLite bağlantısı 3.8.6 içindir, çünkü 3.8.6.1 herhangi bir nedenle mevcut değildir):

  • 22-5.1.1-lolipop

SQLite 3.8.6 :

  • 21-5,0-lolipop

SQLite (bilinmiyor):

  • 20-4.4W.2-Android Wear (taklitçi yok, ancak muhtemelen 3.7.11 veya 3.8.4.3)

SQLite 3.7.11 :

  • 19-4,4-KitKat
  • 18-4.3-Jelly Bean
  • 17-4.2-Jelly Bean
  • 16 -4.1-Jelly Bean (kırık bağlantı, buraya bakın )

SQLite 3.7.4 :

  • 15-4.0.3-Dondurmalı Sandviç
  • 14 -4.0-Ice Cream Sandwich (bozuk bağlantı, buraya bakın )
  • 13-3,2-Petek
  • 12-3,1-Petek
  • 11 -3.0-Petek (kırık bağlantı, buraya bakın )

SQLite 3.6.22 :

  • 10-2.3.3-Recovery
  • 9-2.3.1-Recovery
  • 8 -2.2-Froyo (bozuk bağlantı, buraya bakın )

SQLite 3.5.9 :

  • 7-2,1-Ekler
  • 4-1,6-çörek
  • 3 -1.5-Cupcake (bozuk bağlantı, buraya bakın )

Not: Android SDK düzey bağlantıları, android.database.sqlite paketinin nerede değiştiğini gösterir. Bağlantı olmadığında (örn. SDK seviye 17), bu pakette hiçbir değişiklik olmadığını gösterir.

Not: İşte bazı anormallikler (ayrıntılı olmayan bir şekilde liste):

SQLite 3.7.13 (3.7.11 yerine):

  • LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b (19-4.4-KitKat)
  • LG Optimus G E975 LG-E975 | JZO54K (16-4.1-Jelly Bean)
  • LG G2 D802 LG-D802 | JDQ39B (17-4.2-Jelly Bean)

SQLite 3.7.6.3 ( 3.6.22 yerine):

  • LG Optimus Sol E730 / myTouch E739 / myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22)
  • LG Optimus Vu F100S / F100L (10-2.3.3-Gingerbread, 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, ZENCEFİL)
  • 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 yerine):

  • Samsung Galaxy Note (15-GT-N7000 | IML74K.ZSLPF)
  • Samsung Galaxy SII (15-SC-02C | IML74K.OMMP4 ve GT-I9100 | IML74K.DXLP7)
  • Samsung Galaxy S Duos (15-GT-S7562 | IMM76I.S7562XXBMD6)
  • Samsung Galaxy Tab 7.7 (15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 ( 3.6.22 yerine):

  • LG Saygısı 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 yerine):

  • Motorola Backflip MB300 (7-2.1-Eclair, ERD79)
  • Garmin-Asus nüvifone A10 / A50 / Garminfone (7-2.1-Eclair, ERE27)

Not: SQLite sürümünü almak için adb komutu sadece emülatörlerde ve kullanılabilir sqlite3 bulunan cihazlarda çalışır: https://stackoverflow.com/a/3645800/444761

Diğer cihazlar için Juri'nin cevabına bakınız .

Android Sorun İzleyicisine bir Sorun # 58909 ekledim . Desteklemek istiyorsanız lütfen buna yıldız ekleyin.

Not: Uygulamanızın tüm Android sürümlerinde aynı SQLite sürümünü kullanmasını istiyorsanız, bu üçüncü taraf SQLite destek kitaplığını kullanmayı düşünün .


/ system / bin / sh: sqlite3: bulunamadı Bu rootlu Android 4.0.2 cihazında
Pointer Null

Teşekkürler mark. Biraz kafam karıştı. Geliştirme sırasında sqlite sürümümün tüm cihazlarda tutarlı kalmasını nasıl sağlayabilirim? i demek targetSdkVersionya buildTargetbu konuda herhangi bir etkisi yoktur?
Muhammed Babar

1
@MuhammadBabar Kullanıcının cihazında kurulu SQLite'ın gerçek sürümünü almak için Juri'nin cevabını kullanmanız gerekir. targetSdkVerson ve buildTarget fark etmez.
Mark

59

Belgeler referans numarası olarak 3.4.0 vermesine rağmen, aşağıdaki sql'i çalıştırırsanız, çok daha fazla sayıda SQlite yüklü olduğunu fark edeceksiniz:

Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null);
String sqliteVersion = "";
while(cursor.moveToNext()){
   sqliteVersion += cursor.getString(0);
}

Bu sadece sqlite sürümünü almak için hızlı, kirli bir kod parçasıdır. Örneğin, Android 2.1 yüklü bir HTC Hero'da şunu elde ederim: 3.5.9 .

Android 2.2 ile Nexus One'ımda 3.6.22 bile var .


2
3.4.0'ın minimum sürüm olarak verildiğini hayal ediyorum - taşınabilirlik için, bunu yapmak için gerçekten iyi bir nedeniniz yoksa muhtemelen daha yüksek bir sürümünü varsaymamalısınız.
Eno

2
tabi, haklısın. Ancak, daha yüksek SQLite sürümlerinde performansı artırabilecek bazı gelişmiş özellikler kullanmanız gerekiyorsa, kodu konuşlandırılmış sürüme bağlı olarak sorgulamak ve sonunda sorgu türünü değiştirmek için kullanabilirsiniz :)
Juri

Özel bir 2.2 ROM'lu Droidim de 3.6.22
Austyn Mahoney

Sürüm 2.2 ile Epic'im 3.6.23 diyor - sayılar yukarı doğru gidiyor gibi görünüyor.
dhaag23

1
Android 4.2 ile Nexus 7, 3.7.11 veriyor
christophercotton

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

Aynı ADP1 1.6 ve 2.1 emülatöründe.


Bana verir: sqlite3: izin verilmedi
Yar

Benim için iyi çalıştı. Cmd istemini açtım ve adb.exe'nin bulunduğu android klasörüne geçtim. Sonra iki komutu
yazdım

8
Nexus 4 KitKat üzerinde "/ system / bin / sh: sqlite3: bulunamadı" değerini verir.
Ben Clayton

6

Andorid API'lerine ve desteklenen SQLite sürümlerine kısa bir genel bakış.

resim açıklamasını buraya girin

Genel bakış Mark Carters cevabındaki linkten.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.