没有这样的表 SQLite Android

3

我已经建立了一个数据库帮助类,其中包含一个open()方法,并使用覆盖onCreate()的方式扩展sqlite帮助类(如下所示)。尽管如此,我仍然遇到了“SQLiteException,没有这样的表”错误。我不明白,为什么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);
    }

以下代码旨在临时插入一个条目,因为数据库由于其他原因不能是空的。它似乎执行得很完美,然而最后一行代码(即“after”之后的代码)却导致了错误。
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);

你好,进展如何?如果你解决了,请告诉我们。并考虑接受答案。 - Beasly
2个回答

2
我不知道为什么你实现了一个open方法,同时database_create也有问题。
我猜测第一段代码是CompanyAndProductDatabaseAdapter的一部分。
可以在这里看一下:
Android - Sqlite database method undefined fot type
这几乎就是你需要创建/获取一个继承了SQLiteOpenHelper的数据库所需的全部内容。

谢谢你的帮助。问题在于数据库打开助手似乎不太喜欢在同一数据库中创建两个表。简单指定一个新数据库解决了所有问题。但是,我的创建语句有什么错误呢?现在它似乎可以工作,但如果能更有效率就更好了。 - reader1
嗨,希望你不介意我让你看一下这个链接。我在那里描述了所有的东西。如果有什么不清楚的地方,请告诉我。http://stackoverflow.com/questions/4921550/where-to-close-the-database/4921720#4921720 - Beasly

1

你的问题出在这个函数:

    db = openHelper.getWritableDatabase();
    db = openHelper.getReadableDatabase();

首先:请检查您的数据库路径/名称是否正确。如果找不到数据库,它可以创建一个默认数据库、一个空数据库(没有表、没有任何内容)。
其次:尝试以这种方式打开您的数据库:
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); // or OPEN_READONLY, depending on situation.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接