2010-12-15 46 views
4

Mon application prend les données d'un serveur et les enregistre dans une base de données SQLite. Cela fonctionne très bien dans le simulateur 9550 (BlackBerry Storm 2), mais quand je lance ce dans tout autre simulateur, il me donne cette erreur:Création de la base de données BlackBerry SQLite: "système de fichiers non prêt"

file system not ready

Extrait de code:

URI myURI = URI.create("file:///store/MyDataBase.db"); 

Pourquoi est-ce qui se passe?

+0

Ouvrez un FileConnection à cette URI et voir si canWrite() retourne vrai. – Jonathan

+0

Michael merci pour cela – nimi

Répondre

5

Il se peut que ce magasin ne soit pas une racine de système de fichiers montée et disponible sur le 9550. Vous devez utiliser javax.microedition.io.file.FileSystemRegistry.listRoots() pour obtenir une énumération des systèmes de fichiers actuellement montés.

+0

j'ai essayé cela et j'ai trouvé que le magasin est disponible système de fichiers dans chaque émulateur. que pourquoi ce système de fichiers n'est pas prêt d'erreur? – nimi

23

Richard a raison. Vous devez vérifier l'existence de la racine du système de fichiers "store". Cependant, il y a une ride supplémentaire pour l'utilisation de SQLite. RIM prend uniquement en charge SQLite sur le stockage eMMC. Donc, même si "store" existe, cela ne fonctionnera que si le stockage sous-jacent est eMMC. Notamment le périphérique BlackBerry Bold 9650, AKA Bold2, a "store", mais ce n'est pas eMMC, donc vous ne pouvez pas y mettre une base de données SQLite.

Je ne suis pas au courant d'un moyen direct de savoir si un système de fichiers utilise eMMC. J'ai demandé à RIM et on m'a dit de vérifier la taille du système de fichiers. Si c'est plus de 1   Go, alors c'est eMMC. Ce n'était pas une réponse très satisfaisante pour moi. J'ai fini par vérifier le "système" du système de fichiers. Il s'agit d'un système de fichiers en lecture seule, mais il n'est présent que pour le stockage eMMC et, s'il existe, vous pouvez écrire une base de données sur la racine du système de fichiers "store".

Via le SQLite developer guide overview:

You can use the SQLite API, provided in the net.rim.device.api.database package, to store application data persistently to eMMC memory or a microSD card.

+0

Michael, je dois dire que vous avez plus que moi sur celui-ci. Grande surprise quand j'ai découvert que je ne pouvais pas écrire dans le/store même s'il existait - et seulement sur certains appareils. Cela signifie que les bases de données SQLite sont uniquement disponibles sans SDCards sur certains périphériques. Amusement. – Spedge

+0

Michael ... Mais Sqlite est utilisé uniquement sur les terminaux BlackBerry qui exécutent BlackBerry® Device Software 5.0 ou version ultérieure et qui incluent la bibliothèque SQLite. Qu'en est-il des logiciels d'appareil ci-dessous 5.0. ne pouvons-nous pas utiliser sqlite pour eux ?? si nous ne pouvons pas que ce qui est l'alternative? – nimi

+0

@nimi cette question serait mieux traitée en créant une nouvelle question sur StackOverflow, après avoir cherché des questions existantes qui pourraient être similaires. –