2017-10-03 2 views
0

J'essaye de créer un fichier db (SQLite) sur le disque de l'appareil - et tout fonctionne bien sans exception - mais le fichier n'a pas été créé.Impossible de créer le fichier db (le fichier db sur un chemin spécifique) sur l'appareil (code joint)

ajouté ces autorisations

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Le code:

public class DbHandler extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "myAppDatabase.db";     

private static final String PersistenceFolder = Environment.getExternalStorageDirectory() + File.separator + "MyApp" + File.separator; 
private static final String PersistenceFilePath = PersistenceFolder + DATABASE_NAME; 


public DbHandler(Context context) { 
    super(context, PersistenceFilePath, null, DATABASE_VERSION); 
} 



@Override 
public void onCreate(SQLiteDatabase db) { 

    createTable1(); 
    createTable2(); 
} 

private void createTable1(){ 
    // create table 1 with no exception 
} 

private void createTable2(){ 
    // create table 2 with no exception 
} 
} 
+0

Comment avez-vous déterminé que le fichier est pas créé? Vous avez beaucoup de code inutilisé ici lié au stockage externe; votre base de données est en cours de création sur le stockage interne. – CommonsWare

+0

Je ne vois pas le fichier dans le dossier que je définis dans le constructeur. – Yanshof

+0

Veuillez expliquer ** exactement ** comment vous avez déterminé que le fichier n'est pas créé. Utilisez-vous un gestionnaire de fichiers de bureau? Utilisez-vous un gestionnaire de fichiers sur l'appareil? Utilisez-vous 'shell adb'? Utilisez-vous autre chose? – CommonsWare

Répondre

1

Ok permet de faire ce simple le code décide ci-dessous si j'ai une carte SD sinon nous utilisons le stockage interne, mais il obtient le chemin puis passe ce PATH à DBHelper qui crée le DB Je posterai le code pour obtenir le PATH d'abord puis le code DBHelper

public void onAvail() { 

    String state = Environment.getExternalStorageState(); 

    if (state.equals(Environment.MEDIA_MOUNTED) && (!state.equals(Environment.MEDIA_MOUNTED_READ_ONLY))) { 

     File removable = ContextCompat.getExternalFilesDirs(this, null)[1]; 
     THE_PATH = String.valueOf(removable) + "/Documents/"; 

     //System.out.println("ALL TRUE ==> " + THE_PATH); 

    } else {// if (state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { 
     THE_PATH = ""; 
     //System.out.println("ALL FALSE ==> "+ THE_PATH); 
    } 
} 

code DBHelper partiel pour créer DB

DBHelper public class étend SQLiteOpenHelper {

public static final String DB_NAME = THE_PATH +"PassWord"; 
//public static final String DB_NAME = "PassWord"; 
// Code Above for Internal Storage ONLY 
public static final Integer DB_VERSION = 1;