2012-05-29 19 views
7

Kiedy próbuję wstawić dane do dziennika kota bazowa pokazuje błąd jak java.lang.illegalstateexception database not open android.bazie java.lang.IllegalStateException nie otwierać android

Ale otworzyły db używając

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

Błąd nie jest często się zdarza. Ktoś zna przyczynę tego?

Odpowiedz

12

Spróbuj tak:

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

próbowałem tego, ale zamiast getApplicationContext() Dodałem SQLiteDatabase.How dostanie ApplicationContext w klasie z rozszerzonym SQLiteOpenHelper – user1414146

+1

więc contructor twojego 'SQLiteOpenHelper' przyjmuje jeden parametr' Kontekst kontekstu ', więc 'context.openOrCreateDatabase()' ... – Sajmon

+0

Dziękuję za twoją pomoc :) – user1414146

-1

może otwierasz otwartą bazę danych. zamknij bazę danych za każdym razem, gdy wykonasz swoją pracę.

2

spróbować

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

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

i wywołać tę metodę, gdzie ponowne pisanie aktualny kod.

0

Spróbuj kod

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 
} 
Powiązane problemy