Nouveautés de cette version

Local Navigation

Améliorations SQLite

Améliorations SQLite

BlackBerry Java SDK 7.0 utilise SQLite 3.7.2. BlackBerry Java SDK 6.0 utilisait SQLite 3.6.21. Pour obtenir la description des nouvelles fonctions de SQLite, reportez-vous à la documentation relative à SQLite, disponible sur le site www.sqlite.org.

Le volume de RAM à la disposition d'une base de données SQLite pour stocker les structures de données internes des schémas et des transactions est passé à 16 Mo (5 Mo pour la version 6.0). Une requête peut maintenant atteindre 1 Mo. Dans BlackBerry Java SDK 6.0, la limite de longueur d'une requête était de 4 ko. La limite de traitement de fichier est passée à 64, vous permettant d'ouvrir jusqu'à 56 bases de données en même temps dans BlackBerry Java SDK 7.0.

Par ailleurs, vous pouvez maintenant choisir d'utiliser un journal WAL au lieu du journal de restauration. La journalisation WAL représente une concurrence supplémentaire parce que l'écriture dans la base de données ne bloque pas la lecture. Vous pouvez utiliser un journal WAL en paramétrant l'option WAL dans le pragma journal_mode. Vous pouvez également utiliser le mode partagé en cache pour réduire l'utilisation de la mémoire et multiplier les connexions sur la même base de données.

SQLite en tant que service

SQLite s'exécute désormais en tant que service ; les opérations de base de données utilisent une passerelle au niveau du service d'exécution pour transférer des données entre le code JavaScript et le code natif. Plusieurs méthodes ont été ajoutées pour simplifier et optimiser l'utilisation de la passerelle du service d'exécution.

Lorsque vous créez une instruction conçue pour insérer ou mettre à jour des données, vous pouvez utiliser Statement.executeInsert() et Statement.executeUpdate() pour réduire le nombre d'appels via la passerelle du service d'exécution. Ces méthodes exécutent les opérations suivantes dans le code natif : liaison de paramètres SQL, exécution de l'instruction, réinitialisation de l'instruction et suppression des liaisons. En outre, executeInsert() renvoie l'ID de ligne récemment inséré.

Lorsque vous exécutez une requête qui ne renvoie aucun ensemble de résultats et ne liez pas de paramètres, vous pouvez utiliser Database.executeStatement() pour réduire des appels via la passerelle du service d'exécution. Cette méthode exécute les opérations suivantes dans le code natif : préparation de l'instruction, exécution de l'instruction et finalisation de l'instruction.

Lors de l'utilisation de Statement.getCursor() pour exécuter une requête renvoyant des ensembles de résultats, vous pouvez maintenant récupérer le nombre voulu de lignes à l'aide de Statement.setCursorBufferSize(). L'utilisation de cette méthode réduit l'utilisation de la passerelle du service d'exécution. Lorsque le curseur se déplace au-delà de l'ensemble en mémoire tampon, un nouvel ensemble de lignes est extrait. Vous pouvez récupérer le nombre de lignes mis en mémoire tampon par le curseur avec la nouvelle méthode Statement.getCursorBufferSize().

Lorsque vous récupérez des valeurs de nombre entier à utiliser en tant que clés dans une autre requête, vous pouvez utiliser Statement.getIntegers() et Statement.getLongs(). Ces méthodes vous permettent de simplifier et d'optimiser la récupération de lignes de nombres entiers.

Fonctionnalités de traitement des objets blob améliorées

Avec les nouvelles méthodes de traitement des objets blob, il n'est plus nécessaire de stocker le blob entier dans la mémoire d'application. Par conséquent, le volume de mémoire dynamique disponible ne limite pas la taille de l'objet blob pouvant être lu ou écrit depuis la base de données. Database.createBlobOutputStream() crée un objet OutputStream utilisé pour écrire des données dans un objet blob et Database.createBlobInputStream() crée un objet InputStream utilisé pour lire les données d'un objet blob.

Réservation d'espace pour les objets blob

La méthode Statement.bindZeroBlob() vous permet de lier une série d'octets nuls à un paramètre dans un objet Statement. Vous pouvez utiliser la méthode bindZeroBlob pour réserver l'espace d'un objet blob résultant lorsque vous utilisez Database.createBlobOutputStream() pour écrire des données dans un objet blob et exécutez Statement avec Statement.execute().

Statistiques d'utilisation de la mémoire de connexion

Vous pouvez suivre l'utilisation de la mémoire pour chaque connexion de base de données à l'aide des nouvelles méthodes Database.getCacheUsed(), Database.getSchemaUsed() et Database.getStatementUsed().

Vous pouvez récupérer les types de colonne SQLite de lignes précises à l'aide de la nouvelle méthode Row.getDatabaseColumnTypes().

Prise en charge des pragmas

Vous disposez maintenant d'un sous-ensemble d'instructions PRAGMA SQLite. La classe net.rim.device.api.database.Pragma contient des constantes pour toutes les instructions pragma prises en charge. Les instructions pragmas suivantes sont prises en charge :

  • collation_list

  • compile_options

  • database_list

  • foreign_keys

  • freelist_count

  • journal_mode

  • journal_size_limit

  • page_count

  • synchronous

  • user_version

Association et dissociation de bases de données

Vous pouvez joindre des bases de données à une connexion de base de données existante ou en dissocier. Deux nouvelles méthodes, Database.attach() et Database.detach(), ont été ajoutées. Ces méthodes sont conçues pour vous permettre de joindre jusqu'à dix bases de données à une connexion. Vous pouvez également utiliser la commande DETACH dans une instruction SQL, mais ne pouvez pas utiliser la commande ATTACH.

Classement linguistique

Le classement linguistique est désormais pris en charge. Par exemple, vous pouvez maintenant créer un tableau avec classement en français sur une colonne. Les séquences de classement suivantes sont prises en charge :

  • Standard
  • Afrikaans
  • Arabe
  • Catalan
  • Tchèque
  • Français
  • Hébreu
  • Chinois (Hong-Kong)
  • Hongrois
  • Japonais
  • Coréen
  • Pinyin
  • Polonais
  • Roumain
  • Espagnol
  • Thaï
  • Turc
  • Chinois (Taïwan)

Changements du comportement des curseurs de mise en mémoire tampon

La méthode BufferedCursor.isEmpty() ne déplace plus le curseur et ne renvoie plus false lorsque la position du curseur dépasse la dernière rangée disponible.

La méthode BufferedCursor.prev() repositionne le curseur sur la position initiale (-1) lorsqu'il est appelé plusieurs fois.

Envoi de commentaires

Pour envoyer vos commentaires sur ce produit, rendez-vous à l'adresse www.blackberry.com/docsfeedback.

Sujet précédent: Sécurité NFC

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.