Comment utiliser ma propre base de données sqlite?
J'ai mis mon champ de base de données dans les "actifs" du dossier. Et d'utiliser le code à partir de ce blog pour copier la base de données "/data/data/my_packname/bases de données/", (Ce copier le code je le lance dans le onCreate() la méthode lorsque j'exécute cette application) puis utilisez select * from ... pour obtenir des données. Mais il me donne l'exception: pas d'une telle table.
Quelqu'un m'a dit que si je tente de copier le fichier dans SQLiteOpenHelper du onCreate(), il est trop tard. De sorte que la copie du fichier de code ne peut pas copier le fichier complet.
Donc j'ai besoin d'utiliser adb ou ddms à tirer sur la première base de données?
Donc, si quelqu'un peut m'apprendre à utiliser mon propre databse?
Pouvez-vous me dire le setup?
OriginalL'auteur user275788 | 2010-03-05
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé les instructions fournies dans ce blog et les a trouvés, tandis que sur la droite de la piste, sérieusement compliquer les choses inutilement par l'extension de
SQLiteOpenHelper
. J'ai eu beaucoup plus de chance de faire ce qui suit:Créer une classe utilitaire qui crée la statique de la db en le copiant dans le répertoire correct de biens, mais qui ne se feront pas tellement accroché sur la suite de la SQLiteOpenHelper format.
À l'aide de la même classe utilitaire pour ouvrir la db en utilisant
SQLiteDatabase.openDatabase()
Edit: Voici une version de cet utilitaire de la classe que j'ai créé; ce n'est pas tout à fait terminée, mais vous obtenez la dérive.
J'ai ajouté une version très réduite de mon utilitaire de la classe, tout en laissant la viande du code. (Par exemple, je recommande fortement l'ajout du Journal des états, mais ceux-là ne sont pas nécessaires pour cet exemple de code). De toute façon, dans cette version du code, tout ce que vous devez faire est d'appeler createDatabaseIfNotExists() au démarrage de l'application, comme si vous étendez onCreate() dans android.app.Application.
Sachez également que si la taille de votre fichier dépasse 1 MO read() throw IoException d'actifs et de journaux "Données dépasse UNCOMPRESSED_DATA_MAX "... j'ai résolu ce problème par nameing de mon fichier .jpg dans des actifs -> aapt n'essayez pas de le compresser
Je sais que c'est une vieille question, mais im configuration de l'DBUtils classe. Est le DBUtils classe aussi là que j'ai ajouter des méthodes à mettre à jour,supprimer et effectuer des tâches sur la base de données?
où obtenez-vous "contexte" en createDatabaseIfNotExists fonction?
OriginalL'auteur Daniel Lew
Après que vous avez copié la base de données, vous devriez essayer de clôture et la réouverture de l'SQLiteDatabase objet avant d'exécuter une requête sur elle. J'ai eu un problème similaire avec la copie de la base de données à partir d'un flux d'entrée et c'est ce que résolu pour moi.
OriginalL'auteur Silvio Donnini
voici ma Version de "Silvio Donnini" Code :),
maintenant, vous pouvez mettre à jour la Base de données facilement.
OriginalL'auteur aAndm
Je sais que c'est une vieille question, mais j'ai perdu beaucoup de temps à essayer de le comprendre, avec l'aide de toutes les réponses.
Le problème est que l'appareil stocke une base de données dans son data/data/.../dossier bases de données. Donc, quand vous changer qqch à propos de la base de données (nom, ajouter android table de métadonnées, taille..) il ne fait aucune différence parce que de la base de données stockée et de la méthode vérifiée pour la base de données existante.
D'obtenir la plus récente de la base de données, après modification, vous devez exécuter le programme sans vérifier pour les databses (par exemple, au lieu de
dbExist = checkDataBase();
faire tout simplement faux).Changement:
Après avoir ramassé la "nouvelle" databse vous pouvez retourner à la vérification de l'existant.
Espère que cela aide quelqu'un,
dina
OriginalL'auteur dinafication
Je sais que c'est un vieux post, mais pour ceux qui ont encore arriver ici, après Google ou Bing, c'est la solution pour le problème énoncé:
dans createDataBase() il est à cocher suivantes;
Ce vérifie s'il existe déjà une base de données avec le nom de et si ne pas crée une base de données vide telle qu'elle peut être remplacée par l'une dans le dossier assets. Sur les appareils récents, cela fonctionne parfaitement, mais il ya certains appareils à laquelle cela ne fonctionne pas. Principalement des appareils plus anciens. Je ne sais pas exactement pourquoi, mais il me semble que le getReadableDatabase() fonction non seulement de la base de données, mais ouvre également. Si vous copiez la base de données à partir du dossier des actifs de plus, il a encore le pointeur à une base de données vide et vous obtiendrez le tableau n'existe pas d'erreurs.
Afin de le faire fonctionner sur tous les appareils que vous devez modifier les lignes suivantes:
Même si la base de données est ouverte dans la case, il est fermé par la suite et il ne vous donnera pas plus de problèmes.
OriginalL'auteur Tom Groentjes
Se calmer les gars,Après de longues recherches enfin trouvé stupide erreur "no such table" erreur
Vérifier le nom de la base de données dans le dossier des Actifs, si c'est comme "DATABASE_NAME.L'EXTENSION" puis mettre le nom complet de la classe Helper avec l'extension de son résolu mon problème.
comme dans l'Actif nom de la base de données de connexion.sqlite ou de connexion.db quoi que ce soit. mettre DB_NAME=login.sqlite pleinement avec l'extension.
ce tutoriel fonctionne maintenant parfaitement.
OriginalL'auteur Pranav
La façon de créer une base de données à partir de l'article que vous avez posté est légèrement différent de ce qu'il fait dans android exemples (je ne veux pas te dire si c'est bon ou mauvais).
J'ai appris comment utiliser les bases de données de Sdk le bloc-notes de l'échantillon
C'est un bon exemple pour commencer, car il couvre à la fois la base de données de création de sujet et de l'accès à la base par le biais de ContentProvider (c'est vraiment le seul bon moyen d'obtenir des données à partir de db, sinon vous aurez des problèmes lorsque vous essayez d'obtenir des données simultaneusly à partir de nombreux endroits de votre code).
Vous devriez noter que SQLiteOpenHelper est vraiment puissant et il va vous aider à" si vous allez l'utiliser correctement. Par exemple, il emmagasine de l'actuelle version de base de données (pas sqlite version mais le numéro que vous assingn avec schéma de base de données version) et lors de la création de la nouvelle version de l'application avec la nouvelle structure de base de données, vous pouvez mettre à jour schéma actuel de la nouvelle version dans onUpdate.
Je sais, mais questionne aussi voulu savoir comment il doit utiliser des bases de données sous android ce qui n'est pas couvert par la poste.
OriginalL'auteur skyman