我在Android SQLite数据库中有一个插入查询。我需要保留一个自动增加每个新记录的密钥ID字段。因此,作为insert命令设置的一部分,我在此字段中找到最大值,然后递增它。事实证明我的代码在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名称:讲座
创建了新的子类别记录:ID:6名称:图书签名
创建了新的子类别记录:ID:7名称:Basketball
创建了新的子类别记录:ID:8名称:棒球
创建了新的子类别记录:ID:9名称:Football
创建了新的子类别记录:ID:10名称:Hockey
创建了新的子类别记录:ID:10名称:其他
创建了新的子类别记录:ID:10名称:增量测试
答案 0 :(得分:0)
很可能使用词典顺序进行搜索,并且由于“9”以“ASCII-betical”顺序出现在“10”之后,因此查询始终返回9,而下一个将始终为10.
你的身份证是一个字符串吗?