69 votes

Requête si Android la base de données existe!

J'ai créé une base de données pour mon application android qui contient des données statiques et ne nécessite pas de mise à jour/suppression de fonctionnalités ainsi, lorsque l'application démarre, je veux vérifier si le db existe et si non, alors l'exécution de mes dbAdapter classe. Je sais que c'est une simple instruction si, mais je me demandais juste le moyen le plus efficace de se demander si la db existe.

Cheers

176voto

rds Points 5742

Je préfère vérifier l'existence du fichier directement:

private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
    File dbFile = context.getDatabasePath(dbName);
    return dbFile.exists();
}

84voto

Mathias Lin Points 16035
/**
 * Check if the database exist
 * 
 * @return true if it exists, false if it doesn't
 */
private boolean checkDataBase() {
    SQLiteDatabase checkDB = null;
    try {
        checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
                SQLiteDatabase.OPEN_READONLY);
        checkDB.close();
    } catch (SQLiteException e) {
        // database doesn't exist yet.
    }
    return checkDB != null ? true : false;
}

où DB_FULL_PATH est le chemin d'accès à votre fichier de base de données

4voto

userdelroot Points 116

Lorsque vous initialisez le dessous de classe avec:

mOpenHelper = new DatabaseHelper(getContext());

Qui va automatiquement créer la base de données si elle n'est pas présente. Il permet également de mettre à niveau la base de données en modifiant la DB_VER à un nombre plus élevé.

Alors si vous êtes en mesure d'interroger la base de données à utiliser:

 SQLiteDatabase db = mOpenHelper.getWritableDatabase();

ci-dessus vous permet de vous db.query() & db.insert() etc méthodes.

private static class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DB_NAME = "db_name.db";
    private static final int DB_VER = 1;

    public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VER);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE table_name (" + "_id INTEGER PRIMARY KEY, "
                + " column_name_2 TEXT );");


                .execSQL("INSERT INTO table_name "
                        + "(column_name_2) "
                        + "VALUES " + "('hello world');");


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.w(TAG + "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        try {
            db.execSQL("DROP TABLE IF EXISTS table_name");
            onCreate(db);

        } catch (SQLException e) {
            Log.e(TAG + "getting exception "
                    + e.getLocalizedMessage().toString());
        }
    }

}

2voto

Imran Rana Points 4352

c'est simple: Ouvrez votre base de données dans le bloc try avec chemin de da databse comme:

try{
   SQLiteDatabase   dbe = SQLiteDatabase.openDatabase("/data/data/bangla.rana.fahim/databases/dictionary", null,0);
            Log.d("opendb","EXIST");
            dbe.close();
            }

si une exception se produit, alors la base de données n'est pas sortie donc la créer:

catch(SQLiteException e){
                Log.d("opendb","NOT EXIST");

            SQLiteDatabase db = openOrCreateDatabase("dictionary", MODE_PRIVATE, null);
                    db.execSQL("CREATE TABLE IF NOT EXISTS LIST(wlist varchar);");

                    db.execSQL("INSERT INTO LIST VALUES('খবর');");
                    db.execSQL("INSERT INTO LIST VALUES('কবর');"); //whatever you want
                 db.close();
}

qu'est-ce que vous faite :)

0voto

himanreddy Points 1

Créer une base de données mondiale de la classe helper objet dans votre activité principale. Dans le MainActivity de la fonction onCreate (), essayez ceci:

//global database helper variable

DatabaseHelper dbh;

//in the onCreate()

if(dbh.getReadableDatabase()!=null)
//view the list

else
//create db

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X