我用open()方法构建了一个数据库助手类,并用oncreate()重写了扩展的sqlite助手。(如下所示)。尽管如此,我还是得到了“sqliteexception,no such table”错误。我不明白,为什么openhelper没有帮助呢?

public void open() {
    try{
        db = openHelper.getWritableDatabase();
    } catch (SQLiteException e) {
        db = openHelper.getReadableDatabase();
    }
}

//other stuff

public static final String database_create = "create table " + database_table + " (" + primary_key + " integer primary key autoincrement, "
    + company_column + " text not null, " + product_column + " text not null);";

    @Override
    public void onCreate(SQLiteDatabase _db) {
        _db.execSQL(database_create);
    }

下面的代码是为了临时插入一个条目,因为由于其他原因,数据库不能为空。它看起来执行得很完美,但是后面的最后一段代码抛出了错误
CompanyAndProductDatabaseAdapter cpdAdapter = new CompanyAndProductDatabaseAdapter(this);
    cpdAdapter.open();
    errorguard = cpdAdapter.insertPair("Loading", "...");
    cpdAdapter.close();

//other stuff

cpdAdapter.open();
    Cursor cursor = cpdAdapter.getAllPairsCursor(); //error here
    cursor.requery();
    startManagingCursor(cursor);

最佳答案

我不知道你为什么要实现一个open-方法,而且database_create也不是它应该是的。
我假设第一个代码是CompanyAndProductDatabaseAdapter的一部分。
请看这里:
Android - Sqlite database method undefined fot type
这几乎就是用inhertedSQLiteOpenHelper创建/获取数据库所需要的全部。

10-07 19:40
查看更多