Création d'une base de données sqlite dynamiquement
Bonjour,
A l'aide de quelques tutoriaux sur le net, je tente désespérément d'avancer dans mon dev.
Pour commencer, je veux m'assurer que la base de données sur laquelle je suis censé travailler existe.
Pour cela, j'utilise le code suivant :
Code:
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
|
public static final String DATABASE_PATH = "/data/data/com.engi.aquapalm/databases/";
public static final String DATABASE_NAME = "aqua.db";
private boolean DBExists()
{
SQLiteDatabase db = null;
try
{
String databasePath = DATABASE_PATH + DATABASE_NAME;
db = SQLiteDatabase.openDatabase(databasePath, null, SQLiteDatabase.OPEN_READWRITE);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
db.setVersion(1);
}
catch (SQLiteException e)
{
Log.e("SqlHelper", "database not found");
}
if (db != null)
{
db.close();
}
return db != null ? true : false;
} |
Si cette base n'existe pas, je la crée dynamiquement en partant d'une base de données connue stockée dans le dossier Assets :
Code:
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
|
try
{
String dbFilePath = DATABASE_PATH + DATABASE_NAME;
OutputStream databaseOutputStream = new FileOutputStream(dbFilePath);
InputStream databaseInputStream;
databaseInputStream = myContext.getAssets().open(DATABASE_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = databaseInputStream.read(buffer)) > 0)
{
databaseOutputStream.write(buffer);
}
//close the streams
databaseInputStream.close();
databaseOutputStream.flush();
databaseOutputStream.close();
}
catch (FileNotFoundException e)
{
throw new Error("File not found.");
}
catch (IOException e)
{
throw new Error("Problem copying database from resource file.");
} |
Le problème dans ce code est qu'il ne s'exécute jamais.
Dès la 2ème ligne (OutputStream ...), une exception FileNotFound est déclenchée.
Je ne comprends pas : à ce stade, on est censé créer le fichier, alors pourquoi j'ai ce type d'exception ?
Voilà deux jours que je cherche à comprendre, mais ça dépasse mes compétences de piètre développeur android ... :?
Toute aide sera la bienvenue.
Merci d'avance...