Une de mes applications télécharge une base de données à partir d'un serveur. Lorsque j'installe l'application sur mon téléphone, il télécharge le fichier correctement et charge l'information, aucune exception n'est levée ou quoi que ce soit.Base de données semble disparaître après le téléchargement de mon application. Des idées?
Toutefois, lorsque je télécharge l'apk sur l'Android Market Place et que je la télécharge sur le téléphone, l'application télécharge la base de données et se bloque, indiquant que le gestionnaire sqlite n'a pas pu ouvrir la base de données.
est ici la progression du code:
Dans le SQLiteOpenHelper:
this.FULL_DB_PATH = new String(this.getWritableDatabase().getPath());
this.getWritableDatabase();
// Code for retrieving the database off of the server:
private void copyDataBase(){
InputStream myInput=null;
OutputStream myOutput=null;
try{
// opening connections
URL url = new URL("server_url_here");
URLConnection ucon=url.openConnection();
myInput = ucon.getInputStream();
myOutput = new FileOutputStream(this.FULL_DB_PATH);
// write to the db here
byte[] buffer = new byte[1024*1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
catch(Exception e)
{
try{
myOutput.flush();
myOutput.close();
myInput.close();
}
catch(Exception es){}
}
}
Je ne sais pas pourquoi mon collègue sauve la db avec une extension mp3, mais ... cela fonctionne quand nous re installer l'apk ad-hoc.
Pour:
myOutput = new FileOutputStream(this.FULL_DB_PATH);
J'ai aussi essayé:
myOutput = this.getApplicationContext().openFileOutput(this.FULL_DB_PATH, Context.MODE_WORLD_READABLE);
Mais cela ne fonctionne pas non plus.
Toute aide est grandement appréciée !! Je me suis arraché les cheveux pendant quelques heures et je veux juste que ça finisse haha.
Mais qu'en est-il de l'emballage de l'application avec une base de données pré-construite? J'ai une énorme quantité de données et l'insertion manuelle de toutes les données rendrait l'application inutilisable du point de vue de l'utilisateur. –
Vous avez vraiment 2 options. Si vous pouvez le fournir au format XML, vous pouvez l'ajouter au dossier res/xml de votre projet et y accéder à partir de là. Je peux fournir le code dans une autre réponse si c'est l'option que vous recherchez. L'autre ouverture consiste à télécharger un fichier à partir du serveur lors de la première exécution, puis à parcourir le fichier en ajoutant chaque ligne. Cela pourrait être en XML ou JSON, ou autre chose comme ça. Généralement l'avoir comme XML est la manière recommandée de le faire, mais cela fonctionnera. – matto1990
ajoutant le db pré-construit directement dans le dossier res de l'éclipse ne le fera pas? Je suis confus ... surtout parce que dans la version d'origine que j'avais, j'avais le db inclus dans le dossier res pour le projet mais l'apk lui-même n'a jamais fini de télécharger. –