2017-07-10 53 views
0

我在將新列添加到我的sqlite後保存我的數據遇到了一些困難。如本例中的column_contact_grp下面添加新列sqlite數據庫後無法保存

在我的合同類

@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); 
} 
在我的主要活動

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類

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相關代碼)時,它將再次工作,能夠在我的列表視圖上正確保存並顯示名稱和編號。任何人都可以指導我應該在哪裏尋找錯誤?

回答

2

單詞「組」是SQLite的關鍵字,請使用另一個關鍵字,看看這個link

1

增加數據庫版本和onUpgrade方法寫查詢到在表中添加一列。

1

您應該使用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;"; 
相關問題