2012-05-29 6 views
7

जब मैं डेटा बेस लॉग बिल्ली को सम्मिलित करने के लिए कोशिश कर रहा हूँ पता चलता तरह एक त्रुटि java.lang.illegalstateexception database not open android.java.lang.illegalstateexception डेटाबेस नहीं खोल एंड्रॉयड

लेकिन त्रुटि नहीं है मैं db

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

का उपयोग कर खोला है अक्सर होता है। किसी को इसका कारण पता है?

उत्तर

12

इस तरह यह प्रयास करें:

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

मैं इस कोशिश की कोशिश करो, लेकिन getApplicationContext के बजाय() मैं जोड़ लिया है SQLiteDatabase.How एक वर्ग SQLiteOpenHelper – user1414146

+1

से बढ़ाया में applicationcontext मिल जाएगा तो आपके 'SQLiteOpenHelper' के नियंत्रक एक पैरामीटर' संदर्भ संदर्भ 'लेते हैं, इसलिए 'context.openOrCreateDatabase()' ... – Sajmon

+0

आपकी सहायता के लिए धन्यवाद :) – user1414146

-1

शायद आप एक खोला डेटाबेस खोल रहे हैं। हर बार आपका काम पूरा होने पर अपना डेटाबेस बंद करें।

2

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

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

कोशिश करते हैं और इस विधि जहां अपने पुनः लेखन अपने वर्तमान कोड कहते हैं।

0

इस कोड

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 
} 
संबंधित मुद्दे