【问题标题】:SQLite Exception: no such table Error [duplicate]SQLite 异常:没有这样的表错误 [重复]
【发布时间】:2010-10-30 08:56:57
【问题描述】:

可能重复:
Android Sqlite - “No Such Table” Error

我们正在尝试在 Android 上开发应用程序。我们正在使用 SQLite 数据库,在手机上我们得到了

SQLiteException:没有这样的表。

在模拟器上运行良好。

任何人都可以对此提供任何意见吗?

【问题讨论】:

  • 您是否在干净的模拟器上运行代码?您是否还验证了创建表的代码正在执行?下一步是从模拟器中获取 sqlite db,并使用 sqlite 数据库浏览器查看它,以检查该表是否确实存在。
  • 嗨!我已经创建了一个数据库并且只使用了已经创建的数据库,所以表已经创建了。我只是在现有表上执行 SELECT。我担心它在模拟器上运行良好,而不是在手机上运行
  • 您是否确认该表存在?与选择不工作相比,电话上没有表格的可能性要大得多。再次验证您的数据库是否已正确创建非常容易。

标签: android sqlite


【解决方案1】:

如果您没有正确指定数据库文件名,我相信它会退回到创建一个空数据库。这通常是“找不到表”的原因。检查您的路径和数据库文件名。

【讨论】:

  • 我正在使用例如:data@base-db,因此没有创建 db。在我删除 @like database-db 之后,它对我有用.... :) 感谢您的提示...
【解决方案2】:

我遇到过同样问题的不同方式。

我在尝试插入时收到no such table 错误。

在插入之前,代码正在调用

mDb = mDbHelper.getWritableDatabase(); 

getWritableDatabase(),第一次调用时会调用onCreate()

我让我的 SQL 查询在这个 oncreate 方法中创建表

public void onCreate(SQLiteDatabase db) {

            db.execSQL(DATABASE_CREATE);
            Log.v("INFO1","creating db");
            //Toast.makeText(mCtx, "created", Toast.LENGTH_SHORT).show();
        }

所以对我来说发生的事情是,db 在应用程序首次运行时成功创建,但由于其他一些错误而没有表。 以后无论何时运行应用程序,都不会调用 onCreate(),因为 db 已经存在,因此没有创建表,因此所有后续 SQL 命令都失败了。

所以我将创建表移出 onCreate() ,现在它可以工作了

【讨论】:

  • 那你是怎么在oncreate之外找到db的?
【解决方案3】:

有些人已经能够使用here 提到的步骤解决问题。在我看来,这个问题存在于某些版本的 Android 2.2 上。我已经在我的代码中加入了这个更改,但我仍在寻找 Beta 测试人员来看看它是否真的有效。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2018-09-05
    相关资源
    最近更新 更多