2012-05-29 23 views
7

Cuando estoy tratando de insertar al gato de datos de registro de base muestra un error como java.lang.illegalstateexception database not open android.base de datos java.lang.IllegalStateException no abrir androide

Pero he abierto la db usando

db = SQLiteDatabase.openDatabase(DATABASE_PATH, null, 
       SQLiteDatabase.OPEN_READWRITE); 

El error no es ocurriendo con frecuencia. ¿Alguien sabe el motivo de esto?

Respuesta

12

Pruébalo así:

if (!db.isOpen()) { 
     db = getApplicationContext().openOrCreateDatabase(DATABASE_PATH, SQLiteDatabase.OPEN_READWRITE, null); 
    } 
+0

He intentado esto pero en lugar de getApplicationContext() he añadido SQLiteDatabase.How obtendrá ApplicationContext en una clase extendida desde SQLiteOpenHelper – user1414146

+1

así que el contructor de su 'SQLiteOpenHelper' toma un parámetro' Context context' para 'context.openOrCreateDatabase()' ... – Sajmon

+0

Gracias por su ayuda :) – user1414146

-1

quizás esté abriendo una Base de datos abierta. cierre su base de datos cada vez que termine su trabajo.

2

tratar

DatabaseHelper dataHelper; 
SQLiteDatabase mDb; 
    public DbManager openDB() throws SQLException { 

    mDb = dataHelper.getWritableDatabase(); 
    return this; 
} 

y llaman a este método en su re escribir el código actual.

0

Prueba este código

public class DataBaseHelper extends SQLiteOpenHelper{ 
    public SQLiteDatabase openDataBase() throws SQLException{ 

      //Open the database 

      File dbFile = _myContext.getDatabasePath(DB_PATH + DB_NAME); 
      _myDataBase = SQLiteDatabase.openDatabase(dbFile.toString(), null, SQLiteDatabase.OPEN_READWRITE); 

      return _myDataBase; 
     }//end of openDataBase() method 
} 
Cuestiones relacionadas