添加新的sqlite数据库列后无法保存

时间:2017-07-10 04:34:10

标签: android sqlite android-sqlite

在我向sqlite添加新列后,我遇到了一些保存数据的困难。例如下面例子中的column_contact_grp

在我的合同类中:

 public final static String _ID = BaseColumns._ID;
    public final static String COLUMN_CONTACT_NAME = "name";
    public final static String COLUMN_CONTACT_NUMBER = "number";
    public final static String COLUMN_CONTACT_GRP = "group";

在我的Dbhelper课程中:

 @Override
public void onCreate(SQLiteDatabase db) {
    // Create a String that contains the SQL statement to create the pets table
    String SQL_CREATE_CONTACTS_TABLE = "CREATE TABLE " + NameEntry.TABLE_NAME + " ("
            + NameEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + NameEntry.COLUMN_CONTACT_NAME + " TEXT NOT NULL, "
            + NameEntry.COLUMN_CONTACT_NUMBER + " TEXT,"
            + NameEntry.COLUMN_CONTACT_GRP + " TEXT );";

    // Execute the SQL statement
    db.execSQL(SQL_CREATE_CONTACTS_TABLE);
}

在我的主要活动中:

ContentValues values = new ContentValues();
    values.put(NameEntry.COLUMN_CONTACT_NAME, "Name");
    values.put(NameEntry.COLUMN_CONTACT_NUMBER, "1234");
    values.put(NameEntry.COLUMN_CONTACT_GRP, "testing");

该计划"用于工作和保存良好"但是当我添加新数据时它无法保存。当我删除附加代码(COLUMN_CONTACT_GRP相关代码)时,它将再次起作用,能够在我的列表视图中正确保存和显示名称和数字。任何人都可以指导我应该在哪里寻找错误?

3 个答案:

答案 0 :(得分:2)

单词“group”是SQLite关键字,使用其他关键字,请检查此link

答案 1 :(得分:2)

您应该使用 onUpgrade 方法。

  

需要升级数据库时调用。实施   应该使用此方法删除表,添加表或执行任何其他操作   它需要升级到新的架构版本。

示例

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 1) { // Add your Version .
         db.execSQL(DATABASE_ALTER);
    }

}


 private static final String DATABASE_ALTER = "ALTER TABLE "
    + TABLE_NAME + " ADD COLUMN " + COLUMN_ONE + " string;";

答案 2 :(得分:1)

增加您的DataBase版本,并在onUpgrade方法中写入查询以在表格中添加列。