5

このコードで書き込み可能な 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
    }
}   

誰かが私を助けてくれませんか。

4

1 に答える 1

2

Android DocumentationgetWritableDatabase()によると、初めて呼び出すと、次のメソッドが呼び出されます...

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

メソッドにコードはありませんonCreate()-これが機能する前に、ここで何かを行う必要があります...

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

投稿したリンクcheckDataBase()のメソッドを見てください。これは同じことを行い、欠落している重要なコードです。データベースで何かを行う前に、データベースを作成する必要があります。openDatabase()

また、メソッドを呼び出すように、コードのどこかに DBHelper インスタンスを作成していることを確認してくださいsuper()。このような...

DBHelper helper = new DatabaseHelper(context);
于 2012-06-10T06:21:04.240 に答える