我不明白為什么我的筆記應用程序不斷崩潰。我單擊一個按鈕插入一個注釋,該注釋顯示在列表視圖中,使用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()
添加回答
舉報
0/150
提交
取消