我已经在我的SQLiteOpenHelper onCreate()中创建了我的表

SQLiteException: no such table

or

SQLiteException: no such column

错误。为什么?

注意: (这是每周数十个类似问题的汇总。试图在这里提供一个“规范的”社区wiki问题/答案,以便所有这些问题都可以指向一个很好的参考。)


当前回答

Sqliteopenhelper的方法有create方法和upgrade方法,create方法在任何表第一次创建时使用,而upgrade方法将在每次表的列数发生变化时调用。

其他回答

Sqlite数据库覆盖两种方法

1) onCreate (): 该方法仅在应用程序第一次启动时调用一次。所以它只调用一次

2) onUpgrade () 当我们改变数据库版本时,这个方法被调用,然后这个方法被调用。它用于改变表结构,如在创建DB Schema后添加新列

也许我太晚了,但我想分享我简短而甜蜜的答案。 请检查答案相同的问题。它肯定会对你有帮助。没有更深层次的规范。

如果你对创建表的语法有信心,那么当你在同一个表中添加新列时,可能会发生这种情况,因为…

1)从设备上卸载并重新运行。

OR

2)设置—> app—> ClearData

OR

3)在DatabaseHandler类中修改DATABASE_VERSION(如果你添加了新列,它会自动升级)

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

OR

4)在“DatabaseHandler”类中更改DATABASE_NAME(我也面临同样的问题。但是我通过改变DATABASE_NAME成功了。)

当需要创建表时,第一次调用onCreate。我们需要重写这个方法,在这里我们编写了由SQLiteDatabase执行的表创建脚本。execSQL方法。在第一次部署中执行后,此方法将不再被调用。

onUpgrade 当数据库版本升级时调用此方法。假设第一次部署时,数据库版本为1,在第二次部署时,数据库结构发生了变化,例如在表中增加了额外的列。假设数据库版本现在是2。

数据库名必须以.db结尾,查询字符串必须有结束符(;)

Sqliteopenhelper的方法有create方法和upgrade方法,create方法在任何表第一次创建时使用,而upgrade方法将在每次表的列数发生变化时调用。