merci encore linked pour tes conseils et ton aide.
Je n'ai malheureusement pas encore réussi 
Bon en fait je viens de regarder en détails, calmement et méthodiquement mon soucis et voici la source de mon problème :
1. j'ai crée la base de données et quelques tables avec ma classe database.
2. j'ai découvert SQLiteManger et pour aller plus vite, j'ai crée la totalité des tables et les contenus avec. Cela me donne un fichier bdd.db.
Lorsque je copie ce fichier (bdd.db) dans data/data/machintruc/databases via le ddms et que je teste mon application via l'émulateur, aucun soucis, mes activités s'affichent bien et le contenu qui va avec aussi.
Par contre si j'efface le fichier bdd.db de data/data/.... et que je le mets dans mon dossier assets et que j'ajoute le code createDataBase() suivant, (encore merci linked)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| private static final int VERSION_BDD = 1;
private static final String NOM_BDD = "bdd.db";
private static String DB_PATH = "/data/data/monpackageadequate/databases/";
private final Context myContext;
private SQLiteDatabase myDataBase;
public MaDataBase(Context context) {
super(context, NOM_BDD, null, VERSION_BDD);
this.myContext = context;
}
public MaDataBase(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
this.myContext = context;
}
public void createDataBase() throws IOException{
File f=new File(DB_PATH);
f.mkdirs();
InputStream assetsDB = myContext.getAssets().open(NOM_BDD);
String outFileName = DB_PATH + NOM_BDD;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = assetsDB.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
assetsDB.close();
} |
l'application ne fonctionne plus. J'obtiens une belle erreur
Caused by: android.database.sqlite.SQLiteException: no such table: table_une: , while compiling: SELECT _id, Titre, TEXTE FROM table_une
Je vérifie dans le DDMS et je m'aperçois que le fichier bdd.db a bien été copié dans data/data/....
Par contre je remarque que son poids est plus léger !
Je le récupère via le ddms et l'enregistre sur mon disque dur et je m'aperçois que la base est vide, il ne reste qu'une seule table (android_metadata). En fait une base est crée mais vide 
Pour en être convaincu, j'ai effacé le fichier bdd.db qui est dans data/data/.... via le DDMS et j'ai effacé celui qui est dans assets et j'ai exactement la même erreur. Je retrouve un fichier bdd.bd dans data/data/.... via DDMS mais vide !
La seule ligne modifiée dans le code de linked est
InputStream assetsDB = this.getAssets().open(NOM_BDD);
par
InputStream assetsDB = myContext.getAssets().open(NOM_BDD);
Sinon j'avais une erreur sur this.
Partager