为了账号安全,请及时绑定邮箱和手机立即绑定

Android studio no so so column SQL database

Android studio no so so column SQL database

小唯快跑啊 2022-08-17 10:14:46
我不明白为什么我的笔记应用程序不断崩溃。我单击一个按钮插入一个注释,该注释显示在列表视图中,使用SQLite数据库。给出的错误是:(1) no such column: TITLE FATAL EXCEPTION: mainUnable to resume activity: android.database.sqlite.SQLiteException: no such column: TITLE (code 1 SQLITE_ERROR): , while compiling: SELECT ID, TITLE FROM note_table位于 :mainactivity.javacursor = database.query(table_name, columns, where, where_args, group_by, having, order_by);数据库:public class DBOpenHelper extends SQLiteOpenHelper {public static final String DATABASE_NAME = "notes.db";public static final String TABLE_NAME = "note_table";public static final String ID_COLUMN = "ID";public static final String TITLE_COLUMN = "TITLE";public static final String TEXT_COLUMN = "ITEM2";public static final String DATE_COLUMN = "DATE";SQLiteDatabase db = this.getWritableDatabase();public DBOpenHelper(Context context) {    super(context, DATABASE_NAME, null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {    String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +            " TITLE TEXT)";    db.execSQL(createTable);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    db.execSQL("drop table notes_table");    onCreate(db);}我不明白为什么我会收到此错误消息,因为我的列名称是正确的。我尝试删除并重新编译我的应用程序,但没有成功。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您的问题在于数据库类的构造函数:


public DBOpenHelper(Context context) {

    super(context, DATABASE_NAME, null, 1);

}

具体来说,在 的最终参数中。这是您的数据库版本,也是对数据库结构进行更改的关键。您在评论中提到,之前在设备上调用它,它仍然被调用,因为您的应用程序不知道数据库结构已更改。1super()TITLEITEM1ITEM1


您可以通过在类中引入版本常量来解决此问题,如下所示:


private static final int DB_VERSION = 2;

并在构造函数中使用此变量:


public DBOpenHelper(Context context) {

    super(context, DATABASE_NAME, null, DB_VERSION);

}

每当您对数据库进行任何结构更改时,请递增,这将导致调用其方法。DB_VERSIONSQLiteOpenHelperonUpgrade()


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信