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 名前: オーケストラ
新しいサブカテゴリ レコードが作成されました: ID: 3 名前: Rock
新しいサブカテゴリ レコードが作成されました: ID: 4 名前: Wine Tasting
新しいサブカテゴリ レコードが作成されました: ID: 5 名前: 講義
新しいサブカテゴリ レコードが作成されました: ID: 6 名前: Book Signings
新しいサブカテゴリ レコードが作成されました: ID: 7 名前: バスケットボール
新しいサブカテゴリ レコードが作成されました: ID: 8 名前: 野球
新しいサブカテゴリ レコードが作成されました: ID: 9 名前: フットボール
新しいサブカテゴリ レコードが作成されました: ID: 10 名前: ホッケー
新しいサブカテゴリ レコードが作成されました: ID: 10 名前: その他
新しいサブカテゴリ レコードが作成されました: ID: 10 名前: Incrementer テスト