在我向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相关代码)时,它将再次起作用,能够在我的列表视图中正确保存和显示名称和数字。任何人都可以指导我应该在哪里寻找错误?
答案 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方法中写入查询以在表格中添加列。