2011-07-24 10 views
2

我想在android中創建一列AUTOINCREMENT值。我嘗試了下面的方法,但失敗了。每當添加新記錄時,我都希望列自動增量。如何創建一列auto_increment值?

當我將「AUTOINCREMENT」包含到game_id時,我收到一個異常「無法將只讀數據庫從版本0升級到25」。

db.execSQL("CREATE TABLE Games (" + 
        "_id INTEGER PRIMARY KEY AUTOINCREMENT," + 
        "game_id INTEGER **AUTOINCREMENT**," + 
        "title TEXT" +        
        ");"); 
+1

爲什麼你需要兩個自動增量列?這是SQLite嗎?你爲什麼試圖修改一個只讀數據庫? – Mat

+0

用戶可以從UI中移動項目。所以我看到了一個android如何在音樂播放器中移動播放列表的例子,他們使用了兩個字段。一個是_id,另一個是autoIncrement值。 – Vinoth

+0

我認爲例外是錯誤的。只有當我將「AUTOINCREMENT」包含到game_id時,纔會得到此異常。 – Vinoth

回答

2

在SQLite中,autoincrement關鍵字只修改選擇下一個空整數主鍵的算法的行爲。它不以你想要的方式行事。抱歉。 唯一的解決辦法我能想出是做你想要編程什麼,唯一約束添加到game_id場

See Documentation Here

`CREATE table Games (_id integer primary key autoincrement, game_id integer unique, title text)`; 

這個工作在sqlite3的,但你應該嘗試捕獲錯誤如果你輸入已經在表格中的東西。另一種可能性,取決於你之後的是創建另一個表。

0

如果有人正在尋找解決方案,我這樣做。

  1. 創建新行。
  2. 使用insert(rowdID)的返回值並對必填字段進行更新。

    long rowID = db.insert(games, "url", 
          initialValues); 
        if (rowID > 0) {  
         ContentValues values = new ContentValues(); 
         values.put("game_order", rowID); 
         String[] args = new String[]{String.valueOf(rowID)}; 
         db.update(games, values, "_id=?", args); 
        }