SQLite查询在10处停止递增

时间:2013-05-22 18:08:28

标签: android sqlite

我在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名称:增量测试

1 个答案:

答案 0 :(得分:0)

很可能使用词典顺序进行搜索,并且由于“9”以“ASCII-betical”顺序出现在“10”之后,因此查询始终返回9,而下一个将始终为10.

你的身份证是一个字符串吗?