2011-06-14 33 views
0

在我的android應用程序中,我已經獲得了下面的代碼來創建我的數據庫。這工作沒有問題,但直接執行此代碼後,我試圖getReadableDatabase(),它說數據庫被鎖定拋出異常當我在Android中創建它後嘗試getReadableDatabase()時,SQLite被鎖定

我需要關閉/去任何東西在這裏,以防止它被鎖定?謝謝!

//這樣做是爲了看看它的創建又

private boolean checkDataBase() { 
     SQLiteDatabase checkDB = null; 

     try { 
      String myPath = "/data/data/com.hats.android/databases/"; 
      checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 

     } catch (SQLiteException e) { 
      //database does't exist yet. 
     } 

     if (checkDB != null) { 
      checkDB.close(); 
     } 
     return checkDB != null ? true : false; 
    } 

//然後在下面做是爲了創建它(下面這是getReadableDatabase()錯誤)

@Override 
    public void onCreate(SQLiteDatabase db) { 
      SQLiteDatabase checkDB = null; 
      String myPath = "/data/data/com.hats.android/databases/"; 
      checkDB = this.myContext.openOrCreateDatabase(myPath, SQLiteDatabase.CREATE_IF_NECESSARY, null); 
      checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)"); 
      checkDB.close(); 
    } 

回答

1

在你的onCreate()你不需要做任何。所有你需要的是execSQL線,而是組成:

checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)"); 

只需使用分貝通過:

db.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)"); 
+0

的參數是其實是有點過 - 我被傳入null。如果數據庫尚不存在,如何啓動數據庫以對其執行SQL操作? – 2011-06-15 00:04:41

+0

該參數不應該爲空。你可以發佈你的構造函數的代碼嗎? – Noel 2011-06-15 00:15:31

+0

ahh事實證明,我直接調用了這個null參數,然後在我調用getReadableDatabase()方法之後調用了這個方法,這個方法在我的部分中調用的時候是巨大的失敗。感謝您的澄清! – 2011-06-15 00:24:37

相關問題