/ / Spalte wird nicht in SQLite Android erstellt [duplizieren] - Android, SQLite

Spalte wird nicht in SQLite Android erstellt [duplizieren] - Android, SQLite

Während ich eine neue Spalte hinzufügte, bemerkte ich etwas Eigenartiges: Es wurde nicht erstellt. Also lief ich überall Logs, konnte aber das Problem nicht finden.

Log.d("DBInfo", "Columns created: " + Arrays.toString(cursor.getColumnNames()));

kehrt zurück

/DBInfo: Columns created: [_id, note_title, note_content]

wenn es etwas in der Art von

/DBInfo: Columns created: [_id, note_title, note_content, alarm_set]

DBHelper.class

private static class DBHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "todolist.db";
public static final int DB_VERS = 1;
public static final String TABLE = "notes";

public static final String _ID = BaseColumns._ID;
public static final String NOTE_TITLE  = "note_title";
public static final String NOTE_CONTENT = "note_content";
public static final String ALARM_SET = "alarm_set";


public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERS);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Creates Database

String sqlQuery = "CREATE TABLE " + TABLE + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
NOTE_TITLE + " TEXT, " +
NOTE_CONTENT + " TEXT, " +
ALARM_SET + " TEXT" + ");";
db.execSQL(sqlQuery);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}
}

Das traurige und doch aufregende Leben eines Programmierers: Ich weiß nicht, was das Problem ist, ich weiß nicht, warum es nicht funktioniert.

Antworten:

1 für die Antwort № 1

Die Sache ist, da Sie die Datenbank-Version nicht erhöhen, wenn Sie bei der Installation onUpgrade-Methode nicht weitergeben, sollten Sie wahrscheinlich die vorherige Version testen, um das richtige Upgrade zu tun:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 1 )
// proper upgrade
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
onCreate(db);
}

Und denken Sie daran, die DB_VERS für jede Datenbankänderung zu erhöhen.