SQLiteException:没有这样的表

时间:2011-02-14 11:02:34

标签: android database sqlite

我正在使用自己的SQLite3数据库,而不是每次我的应用程序运行时创建一个新数据库,因为我有一些表,我正在尝试显示静态数据。我创建了我的数据库并将其放在我的资源文件夹中。然后我创建了我的数据库助手,当我启动我的应用程序时,我可以毫无问题地打开我的数据库但是当我尝试使用以下代码打开我的第一个表时

private Cursor getData() 
{
    try
    {
        myDbHelper = new DatabaseHelper(this);
        SQLiteDatabase db = myDbHelper.getReadableDatabase();
        Cursor cursor = db.query("exhibitor", FROM, null, null, null,null, ORDER_BY);
        startManagingCursor(cursor);
        return cursor;
    }
    catch(SQLiteException e)
    {
        String err = e.toString();
        return null;
    }
}


它引发了一个错误android.database.sqlite.SQLiteException: no such table: exhibitor: , while compiling: SELECT _id, EXHIBITOR FROM exhibitor ORDER BY EXHIBITOR,但当我检查数据库参展商是否存在时。

我错过了什么?

9 个答案:

答案 0 :(得分:16)

设置 - >应用程序 - >管理应用程序 - > (点击你的申请) - >清除数据

答案 1 :(得分:6)

每当您在现有数据库中创建新表时,表都不会创建,因为每次都不会调用数据库处理程序的OnCreate函数,但仅在需要时(如未启动数据库)。如果不是这种情况,则新创建的表实际上没有创建。清除数据以强制db实例化自己。

答案 2 :(得分:5)

您是否已将数据库从assets文件夹移至模拟器上的/data/data/YOUR_PACKAGE/databases/

This is a good detailed post关于将数据库移至/data/data/YOUR_PACKAGE/databases/(如果不存在)。

Here是另一个简短而简单的解决方案。

答案 3 :(得分:2)

清除数据并从设备卸载应用程序,然后在设备中重新安装应用程序......

Settings -> Applications -> Manage Applications -> Your Application Name -> Clear data

答案 4 :(得分:1)

每次启动应用程序时,使用SQLiteOpenHelper.onCreate()都不会创建新数据库 - 而是在数据库尚不存在的情况下创建数据库。

听起来你可能有一个由你的帮助者创建的空数据库(如果根本没有数据库,我可能会期望一个不同的异常),以及你在Android之外创建的独立数据库。您和您的应用似乎没有在同一个地方查找您的数据。

答案 5 :(得分:0)

依旧对我说 更改您的DATABASE_VERSION

如果您的DATABASE_VERSION = 1,它只会看到三个表 如果您的DATABASE_VERSION = 2它会看到更多的表但我真的不知道有多少

祝你好运

答案 6 :(得分:0)

仅清除数据对我不起作用。

有效的是:

  • 卸载应用程序
  • 重新启动设备或模拟器
  • 禁用即时运行(不仅是主要组,还包括所有单独的即时运行设置)
  • 构建->清洁项目
  • 构建->重建项目

答案 7 :(得分:0)

我只是有一个简单的错误。

原因:

enter image description here

解决方案:

enter image description here

答案 8 :(得分:0)

只是发生在我身上。我不完全知道为什么,但是将DB_VERSION属性更改为更大的数字将使其起作用。关键是:每次更改数据库的字段(SQLiteDB类的属性)时,我都需要更改该数字。