Sylvain-a Posté(e) 6 janvier 2012 Share Posté(e) 6 janvier 2012 Bonjour, Je me pose actuellement une question pour ma nouvelle appli : Peut-on exporter des données sqlite dans une apk? J'aurai besoin de pas mal de données et je trouve que les mettre en "dur" dans le code pour réaliser l'insertion au moment de l'installation alourdirait pas mal l'appli. Merci par avance, Cordialement. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylvain-a Posté(e) 11 janvier 2012 Auteur Share Posté(e) 11 janvier 2012 (modifié) Bonsoir, J'ai trouvé ma réponse depuis quelques jours, néanmoins je me heurte à un probleme, la copie pour des fichiers supérieurs a 1mo ne fonctionne pas (limite du systeme). J'ai donc décidé de faire comme beaucoup et découper ma base de données en 3 morceaux qui doivent être réassemblés lors du premier lancement de l'appli. Le problème et qu'il semble que le réassemblage corrompt la base de données, en effet, lors de la requete sql, une erreur "table not found" est levée. Or la table est bien dans la base de données sqlite de départ. Je précise : le découpage est réalisé automatiquement en php. 2eme précision, après export et vérification avec phpliteadmin, il apparait que plus aucune table n'est enregistrée dans la db, mais qu'une table android_metadata est apparue. Par contre, le fichier fait exactement la meme taille qu'avant découpage et est au moins aussi rempli. Voici le code concerné : protected void initDB(){ try{ String to="/data/data/package/databases/tt.db"; OutputStream output=new FileOutputStream(to); //flux de sortie for(int i=0;i<3;i++){ // les trois fichiers sont tt_0, tt_1 et tt_2 InputStream input=context.getAssets().open("tt_"+String.valueOf(i)+".db"); //ouverture de la partie actuelle byte[] buffer=new byte[1024]; int length; while((length=input.read(buffer)) > 0){ output.write(buffer, 0, length); //écriture dans le fichier db final } input.close(); //fermeture flux entrant } output.close(); //fermeture flux sortant output.flush(); //vidage }catch(Exception e){ System.out.println("Error : "+e.getMessage()); } } Quelqu'un a-t'il une idée? Merci par avance :) Modifié 12 janvier 2012 par Sylvain-a Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Willy55 Posté(e) 26 mars 2012 Share Posté(e) 26 mars 2012 Bonjour, As-tu réussis à résoudre ton problème ? Peut-tu donner tes avancés sur le sujet, cela m'intéresse également. Merci. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
salimdz Posté(e) 26 mars 2012 Share Posté(e) 26 mars 2012 bonsoir on ne peux pas trouvé une solution avec les fichiers XML mieux que les tables sqlite avec ces problemes j'ai pensé à ca : Fichiers XML à la place d'une Base de Donnée Sqlite ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sylvain-a Posté(e) 27 mars 2012 Auteur Share Posté(e) 27 mars 2012 Oui, ça vient du fait que j'appelle la fonction getWritableDatabase (ou getReadable). Il faut passer par SQLiteDatabase.open("database") (ou un truc comme ça, j'ai pas le code sous les yeux la) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
salimdz Posté(e) 18 mai 2012 Share Posté(e) 18 mai 2012 bonjour merci pour votre reponse je vais verifié moi j'ai pensé à changé les tables par des fichiers xml Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
arnouf Posté(e) 6 juin 2012 Share Posté(e) 6 juin 2012 Tu peux également tester de compresser ton fichier db que tu places dans le assets. Aussi la limitation de la DB je ne la recontre plus depuis que j'utilise : OutputStream out = null; try { InputStream in = context.getAssets().open(dbPathAsset); out = new FileOutputStream(pathOut); byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } in.close(); in = null; out.flush(); out.close(); out = null; } catch (Exception e) { Log.e("tag", e.getMessage()); } Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.