2010-02-25 7 views
0

Je mets mon fichier de base de données sqlite dans le dossier "assets" Et j'écris un calss DAO pour obtenir des données de la base de données, Mais l'information de log.e signifie que je ne peux pas ouvrir la base de données.Échec de la base de données sqlite ouverte

public class GetData {

private static String DB_PATH = "/data/data/com.SGMalls/databases/mallMapv2.sqlite"; 

private static SQLiteDatabase myDataBase; 

public static ArrayList<Mall> getMall(){ 

    ArrayList<Mall> mallArrayList=new ArrayList<Mall>(); 

    String queryString="select id,title from malls order by title"; 

    myDataBase = SQLiteDatabase.openDatabase(DB_PATH,  null,SQLiteDatabase.OPEN_READONLY); 

    Cursor cursor=myDataBase.rawQuery(queryString, null); 

    if(cursor!=null){ 

    cursor.moveToFirst(); 

    while(!cursor.isLast()){ 

    Mall mall=new Mall(); 

    mall.setMallid(cursor.getInt(0)); 

    mall.setMallname(cursor.getString(1));    
    mallArrayList.add(mall); 
cursor.moveToNext(); 
    } } 
myDataBase.close(); 

return mallArrayList; 

}} 

Répondre

1

Le dossier assets/ n'a rien à voir avec les bases de données, directement. Si vous placez une base de données dans le dossier assets/, vous devez le copier à partir du dossier assets/ vers l'emplacement où vous souhaitez placer la base de données dans le système de fichiers actuel.

+0

Merci beaucoup. Donc, si je copie la base de données à SDCard. Ensuite, le champ est également /data/data/com.SGMalls/databases/mallMapv2.sqlite "? Merci – user275788

+0

Je veux dire que je viens de définir le chemin de copie est: /data/data/com.SGMalls/databases/mallMapv2.sqlite " Ensuite, ce fichier est stocker dans où? intégrer dans cette application? Je suis désolé. Je suis un débutant sur le développement Android. – user275788

1

Regardez ce link.

Vous devrez appeler la première méthode createDataBase(). Si createDataBase() fonctionne avec succès, vous pouvez vérifier votre /data/data/com.SGMalls/databases/mallMapv2.sqlite est vraiment présent.

S'il existe déjà, il ne fera aucun mal à lui.

copyDataBase() devrait vous donner quelques explications sur la façon dont il le fait de copier des actifs à ../databases/ ..

Questions connexes