web-dev-qa-db-fra.com

Version de SQLite utilisée dans Android?

Quelle est la version de SQLite utilisée dans Android?

Raison: je me demande comment gérer les migrations de schéma. Les versions plus récentes de SQLite prennent en charge une commande SQL "ALTER TABLE" qui me permettrait de ne pas avoir à copier des données, à supprimer la table, à recréer une table et à réinsérer des données.

265
Eno

UPDATE OCT 2016 : voici un lien vers la documentation officielle mise à jour qui inclut les points principaux de cette réponse: package Android.database.sqlite javadoc de nivea

Utilisation des émulateurs (adb Shell sqlite3 --version):

UPDATE: Désolé, les différences d'API au niveau du package plus anciennes (SDK 18 et antérieures) ont cessé de fonctionner: https://issuetracker.google.com/issues/37048579

SQLite .22. :

  • 29 - 10.0-Q (Révision 7 dans le gestionnaire de SDK)
  • 28 - 9.0-P

SQLite .19.4 (pour une raison quelconque, 3.19.4 n'existe pas dans les notes de publication de sqlite! Vous devez donc créer un lien vers les enregistrements de contrôle de version):

  • 27 - 8.1.0-O MR1

SQLite .18.2 :

  • 26-8.0.0-O (note: O versions bêta utilisées .18. )

SQLite .9.2 :

  • 25-7.1.1-N MR1
  • 24 - 7.0-N (remarque: les aperçus utilisaient la même version)

SQLite .8.10.2 :

  • 23-6.0-M (note: aperçu M 1 (SDK niveau 22) utilisé .8.1 )

SQLite .8.6.1 (le lien SQLite est pour 3.8.6 car 3.8.6.1 n'existe pas pour une raison quelconque):

  • 22-5.1.1-sucette

SQLite .8.6 :

  • 21-5.0-sucette

SQLite (inconnu):

  • 20-4.4W.2-Android Wear (pas d'émulateur disponible, mais probablement soit 3.7.11 ou 3.8.4.3)

SQLite .7.11 :

  • 19-4.4-KitKat
  • 18-4.3-haricot gelée
  • 17-4.2-haricot gelée
  • 16 - 4.1-haricot gelée

SQLite .7.4 :

  • 15-4.0.3-Sandwich à la crème glacée
  • 14 - 4.0-Sandwich à la crème glacée
  • 13-3.2-nid d'abeille
  • 12-3.1-nid d'abeille
  • 11 - 3.0-nid d'abeille

SQLite .6.22 :

  • 10-2.3.3-pain d'épice
  • 9-2.3.1-pain d'épice
  • 8 - 2.2-Froyo

SQLite .5.9 :

  • 7-2.1-Eclair
  • 4-1.6-Donut
  • - 1,5-Cupcake

Remarque: Android Les liens de niveau SDK indiquent où le package Android.database.sqlite a été modifié. Lorsqu'il n'y a pas de lien (par exemple, SDK niveau 17), n'indique aucune modification de ce package.

Remarque: Voici quelques anomalies (liste nullement exhaustive):

SQLite .7.1 (au lieu de 3.7.11):

  • 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 .7.6. (au lieu de 3.6.22):

  • LG Optimus Sol E730/myTouch E739/myTouch Q C800 (pain d'épices 10-2.3.3, GRJ22)
  • LG Optimus Vu F100S/F100L (Pain d'épice 10-2.3.3, RK39F)
  • LG Optimus LTE TAG F120K/F120L (Pain d'épices 10-2.3.3, GRK39F)
  • LG Optimus LTE L-01D (10-2.3.3-Pain d'épice, GRJ90)
  • LG Optimus Net P690b (10-2.3.3-pain d'épices, pain d'épices)
  • LG Prada KU5400 (10-2.3.3-pain d'épice, GWK74)
  • LG Prada P940 (pain d'épices 10-2.3.3, GWK74)
  • LG LU6200/SU640 (10-2.3.3-Pain d'épice, GRJ90) s

SQLite .7.5 (au lieu de 3.7.4):

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

SQLite .7.0.1 (au lieu de 3.6.22):

  • LG Esteem MS910 (10-2.3.3-pain d'épices, GSE-_v.05)
  • AndroTab (8-2.2-Froyo, 1.0.7100.0385)
  • GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)

SQLite .6.23.1 (au lieu de 3.5.9):

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

Remarque: La commande adb permettant d’obtenir la version SQLite ne fonctionne que sur les émulateurs et sur les périphériques dotés de sqlite3: https://stackoverflow.com/a/3645800/444761

Pour les autres périphériques, voir réponse de Juri .

J'ai ajouté un numéro n ° 58909 au Android Issue Tracker. Merci de mettre ceci en évidence si vous souhaitez le soutenir.

Remarque: si vous souhaitez que votre application utilise la même version de SQLite sur toutes les versions de Android, utilisez cette bibliothèque de support tierce de SQLite .

467
Mark

Bien que la documentation indique 3.4.0 comme numéro de référence, si vous exécutez le code SQL suivant, vous remarquerez qu’un nombre beaucoup plus élevé de SQlite est installé:

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

Ceci est juste un morceau de code sale et rapide pour récupérer la version sqlite. Par exemple, sur un HTC Hero équipé de Android 2.1, je reçois: .5.9.

Sur mon Nexus One avec Android 2.2, je reçois même .6.22.

57
Juri
$ adb Shell
$ sqlite3 --version
sqlite3 --version
3.5.9

Idem sur les émulateurs ADP1 1.6 & 2.1.

26
yanchenko

Un bref aperçu des API Andorid et des versions prises en charge par SQLite.

enter image description here

La vue d'ensemble est à partir du lien dans la réponse de Mark Carters.

5
Petterson