2014-01-16 109 views
1

我一直想弄清楚爲什麼我的autoincrement id列不起作用。表插入罰款,但是,只要我嘗試插入另一行,id列不增加。它只是試圖插入ID爲0的下一行。任何幫助將不勝感激!Android SQLite不自動增量

下面是列的元數據(名稱和類型)和db.execSQL內我創建表的SQL()方法:

ID(BaseColumns._ID, "INTEGER"), 
YEAR("year", "real"), 
MAKE("make", "text"), 
MODEL("model", "text"), 
STYLE("style", "text"), 
COLOR("color", "text"), 
ALT_COLOR("altColor", "text"), 
CLASS("class", "text"), 
CLASS_CODE("classCode", "text"); 

db.execSQL("CREATE TABLE " + TABLE_NAME + " (" 
+ Columns.ID.getName() + " " + Columns.ID.getType()+ " PRIMARY KEY AUTOINCREMENT" + ", " + Columns.YEAR.getName() + " " + Columns.YEAR.getType() + ", " 
+ Columns.MAKE.getName() + " " + Columns.MAKE.getType() + ", " 
+ Columns.MODEL.getName() + " " + Columns.MODEL.getType() + ", " 
+ Columns.STYLE.getName() + " " + Columns.STYLE.getType() + ", " 
+ Columns.COLOR.getName() + " " + Columns.COLOR.getType() + ", " 
+ Columns.ALT_COLOR.getName() + " " + Columns.ALT_COLOR.getType() + ", " 
+ Columns.CLASS.getName() + " " + Columns.CLASS.getType() + ", " 
+ Columns.CLASS_CODE.getName() + " " + Columns.CLASS_CODE.getType() + ");"); 
+3

你能告訴我們你的插入SQL命令嗎? – RvdK

+0

我知道它應該是什麼樣子,但是我調用了context.getContentResolver()。insert(uri,values),其中的值是ContentValues。 我認爲這回到我的ContentProvider並調用插入方法。 – Brandon

+0

而我的ContentProvider調用db.insert()... 'id = db.insert(uriType.getTableName(),「foo」,values); resultUri = id == -1? null:ContentUris.withAppendedId(uri,id); ' – Brandon

回答

2
01-16 05:51:09.882: E/Database(1177): Error inserting model=SHELBY CONV. style= _id=0 color=KONA BLUE classCode=JCA class=JCA - 2012-15 - ALL year=2012 altColor= make=FORD 
01-16 05:51:09.882: E/Database(1177): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed 

在插入你不應該定義ID列值,在例外情況下由_id=0證明。 Autoincrement only works if the column value is not specified:

如果未在插入中指定ROWID,或者指定的ROWID的值爲NULL,則會自動創建適當的ROWID。

0

我發現在將ContentValues發送到context.getContentResolver()。insert(uri,values)方法時,ContentValues不應包含包含id的鍵/值對。這是導致我的_id列不能自動遞增的原因。