Kis*_*pta 5 java database sqlite android indexoutofboundsexception
我试图用这段代码打开一个可写的SQLite数据库......
public DataAdapterForServieClass open() throws SQLException {
db = DBHelper.getWritableDatabase();
return this;
}
Run Code Online (Sandbox Code Playgroud)
但是我在线上收到以下错误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)
Run Code Online (Sandbox Code Playgroud)
这是我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
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮帮我吗
当你getWritableDatabase()第一次调用时,它会调用以下方法,根据Android文档...
onCreate(SQLiteDatabase)
onUpgrade(SQLiteDatabase, int, int)
onOpen(SQLiteDatabase)
Run Code Online (Sandbox Code Playgroud)
您的方法中没有任何代码onCreate()- 您需要在它起作用之前在这里做一些事情,例如这样......
public void onCreate(SQLiteDatabase database) {
database.openOrCreateDatabase("/come/example/mydatabase",null);
}
Run Code Online (Sandbox Code Playgroud)
查看您发布的链接checkDataBase()中调用的方法- 这做同样的事情,并且是您缺少的重要代码片段。您需要先创建数据库,然后才能对其执行任何操作。openDatabase()
还要确保在代码中的某个位置创建 DBHelper 实例,以便它调用该super()方法。像这样...
DBHelper helper = new DatabaseHelper(context);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |