2012-06-10 69 views
5

我試圖打開這個代碼寫的SQLite數據庫...java.lang.StringIndexOutOfBoundsException:指數= 0長度= 0 GET SQLite數據庫

public DataAdapterForServieClass open() throws SQLException { 
    db = DBHelper.getWritableDatabase(); 
    return this; 
} 

但是我對收到下面的錯誤db = DBHelper.getWritableDatabase();線...

06-10 11:58:13.995: ERROR/AndroidRuntime(548): FATAL EXCEPTION: main 
06-10 11:58:13.995: ERROR/AndroidRuntime(548): java.lang.StringIndexOutOfBoundsException: index=0 length=0 
06-10 11:58:13.995: ERROR/AndroidRuntime(548):  at android.app.ContextImpl.validateFilePath(ContextImpl.java:1518) 
06-10 11:58:13.995: ERROR/AndroidRuntime(548):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:725) 
06-10 11:58:13.995: ERROR/AndroidRuntime(548):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
06-10 11:58:13.995: ERROR/AndroidRuntime(548):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149) 

這是我DBHelper類的代碼...

static class DatabaseHelper extends SQLiteOpenHelper { 
    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
      + " to " 
      + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS titles"); 
     onCreate(db); 
    } 

    public void onCreate(SQLiteDatabase arg0) { 
     // TODO Auto-generated method stub 
    } 
} 

有人可以幫助我。

+3

請提供DBHelper類的 –

+0

公共DataAdapterForServieClass開放代碼()拋出的SQLException { DB = DBHelper.getWritableDatabase(); 返回此; } 這是dbhelper類的代碼,它出現錯誤的地方 –

+1

@KishorDgupta,我們需要你的'DBHelper'類的代碼,而不是你調用它的代碼。 'DBHelper'中'getWritableDatabase()'方法的代碼是什麼?鑑於 – wattostudios

回答

2

當你調用getWritableDatabase()首次,它會調用下面的方法,根據Android Documentation ...

onCreate(SQLiteDatabase) 
onUpgrade(SQLiteDatabase, int, int) 
onOpen(SQLiteDatabase) 

您沒有任何代碼在你onCreate()方法 - 你需要在這裏做什麼之前,它會工作,比如這個...

public void onCreate(SQLiteDatabase database) { 
    database.openOrCreateDatabase("/come/example/mydatabase",null); 
} 

看在它調用openDatabase()link you postedcheckDataBase()方法 - 這種做同樣的事情,而且是即時通訊你缺少的重要代碼片斷。您需要先創建數據庫,然後才能對其執行任何操作。

另外,還要確保在某處你的代碼中創建您的DBHelper實例,以便它調用super()方法。像這樣...

DBHelper helper = new DatabaseHelper(context); 
+0

謝謝.i使用不同的代碼。一個類創建和上課開放。因爲爲了維護一個MVC模型,謝謝我瞭解它。我很好 –