2016-04-21 103 views
0

我在使用自動增量功能在SQL應用程序中工作時遇到了一些麻煩。自動增量無法使用ID

public static final String TABLE_NAME = "collections"; 
public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_TITLE = "title"; 
public static final String CREATE_STATEMENT = "CREATE TABLE " + TABLE_NAME + 
     "(" + 
     COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + 
     COLUMN_TITLE + " TEXT NOT NULL" + ")"; 

是否有任何可能導致此問題的create語句的主要問題?

+0

什麼是logcat的顯示一個主列? –

+0

插入collection_id = 1時出現錯誤reminder_id = 0 android.database.sqlite.SQLiteConstraintException:列提醒標識,collection_id不唯一(代碼19) – scribblelover27

+0

發佈完整的Logcat。 –

回答

0

當你插入一個新值時,不要定義id(它會自動生成),只需使用COLUMN_TITLE。

即使在方案中,您可以跳過id定義,因爲sqlite在內部使用RAWID,後者會將您的ID別名爲RAWID。

1

沒有必要將AUTOINCREMENT NOT NULL添加到主鍵,因爲主鍵(列)應該是自動遞增的並且它不能爲空。 下面是一個SQL查詢的示例,您可以編輯它來創建自己的表。

public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + "Your_Table_Name" + 
      " (" + BaseColumns._ID + " INTEGER PRIMARY KEY," + 
      "first_column_name" + " TEXT" + "," + 
      "second_column_name" + " TEXT" + ")"; 

BaseColumns是由Android在package android.provider提供的接口,你可以使用創建具有名稱"_id"