我在 Android SQLite 数据库中有一个插入查询。我需要保留一个为每条新记录自动递增的关键 id 字段。因此,作为我的插入命令设置的一部分,我在该字段中找到最大值,然后将其递增。事实证明,我的代码在 10 处停止递增。前 9 次插入一切正常,但我没有超过 10。我做错了什么???谢谢!
这里的代码:
public boolean createSubcategory(String subcategoryName) {
int next;
ContentValues newValues = new ContentValues();
SQLiteDatabase db = myDBOpenHelper.getWritableDatabase();
/* get the maximum value in the sub category table - this is the number to increment
* and assign as the subcategory_id for our new subcategory record */
cursor = db.query(SUBCATEGORIES_TABLE, new String [] {"MAX("+SUBCATEGORY_ID_COLUMN+") AS COL"}, null, null, null, null, null);
/* Insert a row into the Subcategories table */
if ( cursor.getCount() > 0 ) {
cursor.moveToFirst();
next = cursor.getInt(cursor.getColumnIndex("COL")) + 1;
} else {next = 1;}
newValues.put(SUBCATEGORY_ID_COLUMN, next);
newValues.put(SUBCATEGORY_COLUMN, subcategoryName);
db.insert(SUBCATEGORIES_TABLE, null, newValues);
cursor.close();
System.err.println("New subcategory record created: ID: " + next + " Name: " + subcategoryName + " Category ID: " + categoryID);
return true;
}
这是我从 MainActivity 中调用它的方式:
private void createSubcategories(myDB db) {
db.createSubcategory("Jazz");
db.createSubcategory("Orchestra");
db.createSubcategory("Rock");
db.createSubcategory("Wine Tasting");
db.createSubcategory("Lectures");
db.createSubcategory("Book Signings");
db.createSubcategory("Basketball");
db.createSubcategory("Baseball");
db.createSubcategory("Football");
db.createSubcategory("Hockey");
db.createSubcategory("Other");
db.createSubcategory("Incrementer Test");
}
这是我得到的输出。看看 subcategory_id 如何在 10 处停止?
创建了新的子类别记录:ID:1 名称:Jazz
创建了新的子类别记录:ID:2 名称:Orchestra
创建了新的子类别记录:ID:3 名称:Rock
创建了新的子类别记录:ID:4 名称:Wine Tasting
创建了新的子类别记录:ID:5 名称:Lectures
创建了新的子类别记录:ID:6 名称:Book Signings
创建了新的子类别记录:ID:7 名称:篮球
创建了新的子类别记录:ID:8 名称:棒球
创建了新的子类别记录:ID:9 名称:足球
创建了新的子类别记录:ID:10 名称:Hockey
创建了新的子类别记录:ID:10 名称:其他
创建了新的子类别记录:ID:10 名称:Incrementer test