java.lang.StringIndexOutOfBoundsException:在= sqlite数据库中索引= 0 length = 0

我试图用这段代码打开一个可写的SQLite数据库……

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

但是我在db = DBHelper.getWritableDatabase();上收到以下错误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 } } 

有人可以帮助我。

当你第一次调用getWritableDatabase()时,它将调用以下方法,根据Android文档 …

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

您的onCreate()方法中没有任何代码 – 您需要在此处执行某些操作,例如此…

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

查看您在调用checkDataBase() 发布的链接中的checkDataBase()方法 – 这会做同样的事情,并且是您缺少的重要代码段。 您需要先创建数据库,然后才能对其执行任何操作。

还要确保代码中的某个位置正在创建DBHelper实例,以便它调用super()方法。 喜欢这个…

 DBHelper helper = new DatabaseHelper(context);