我仍然無法解決數據庫中更新的問題。更新SQLite數據庫中某個項目的ID
我的應用程序在兩個活動中定義了兩個列表。 列表A有位置和列表B項目。 這兩個列表中的數據都保存到數據庫並從數據庫上載。 從代碼中可以看出,我沒有任何刪除問題。
當我刪除列表A中的一個位置時,列表B中屬於這個位置的一組項目也被刪除。
更新出現問題:刪除後的項目集應該是自動增量的,但它只適用於刪除項後的第一行,其他項保持不變。
這裏是我的代碼:
public void deleteItemsFromProduct(long nomer) {
cursor = DataSource.queryAllinItems();
if (cursor != null) {
String [] pat = new String[] { String.valueOf(nomer) };
db.delete(DBHelper.TABLE_ITEMS, DBHelper.COLUMN_NOMER + "=?", pat);
for (int i=0; i<cursor.getCount(); i++){
ContentValues cv = new ContentValues();
cv.put(DBHelper.COLUMN_NOMER, nomer);
pat = new String[] { String.valueOf(nomer+1) };
int updCount = db.update(DBHelper.TABLE_ITEMS, cv, DBHelper.COLUMN_NOMER + "=?", pat);
Log.d(LOG_TAG, "updated rows count = " + updCount);
}
if (cursor.moveToFirst()) {
Log.d(LOG_TAG, "--- Left in the table for items and prices: ---");
idColIndex = cursor.getColumnIndex(DBHelper.COLUMN_ITEM_ID);
nameColIndex = cursor.getColumnIndex(DBHelper.COLUMN_ITEM);
priceColIndex = cursor.getColumnIndex(DBHelper.COLUMN_PRICE);
nomerColIndex = cursor.getColumnIndex(DBHelper.COLUMN_NOMER);
do {
Log.d(LOG_TAG, "item id = "
+ cursor.getInt(idColIndex)
+ ", item name = "
+ cursor.getString(nameColIndex)
+ ", item price = "
+ cursor.getInt(priceColIndex)
+ ", product nomer = "
+ cursor.getInt(nomerColIndex));
} while (cursor.moveToNext());
} else {
Log.d(LOG_TAG, "Cursor is null");
cursor.close();
}
}
這裏登錄
11-07 14:37:49.862: D/(1813): item id = 89, item name = б, item price = 0, product nomer = 0
11-07 14:37:49.862: D/(1813): item id = 90, item name = т, item price = 1, product nomer = 1
11-07 14:37:49.922: D/(1813): item id = 91, item name = м, item price = 2, product nomer = 2
11-07 14:37:58.442: D/(1813): MainActivity: onResume()
11-07 14:38:05.382: D/(1813): --- Delete from table for products: ---
11-07 14:38:05.465: D/(1813): deleted row id = 72, name = х, image = /mnt/sdcard/download/sliced-bread-icon.png
11-07 14:38:05.712: D/(1813): updated rows count = 1
11-07 14:38:05.752: D/(1813): updated rows count = 0
11-07 14:38:05.752: D/(1813): --- Left in the table for items and prices: ---
11-07 14:38:05.804: D/(1813): item id = 90, item name = т, item price = 1, product nomer = 1
11-07 14:38:05.822: D/(1813): item id = 91, item name = м, item price = 2, product nomer = 2
11-07 14:38:10.416: D/(1813): MainActivity: onPause()
11-07 14:38:10.622: D/(1813): ChildActivity: onCreate()
11-07 14:38:10.723: D/(1813): item id = 90, item name = т, item price = 1, product nomer = 0
當我刪除id爲72的產品,它停留在列表的第A(nomer 0)項目在ID爲89的列表B也被刪除。因爲其父母在列表A中佔據第一位置,所以id = 90的項目獲得nomer = 0。但是id = 91的項目保持nomer = 2,但它應該是nomer = 1。所以,自動增量只適用於刪除後的下一個項目,其他所有項目保持不變。
爲什麼你需要更新ID? ID不應該改變。 –
實際上它不是關於更新id。我已經鏈接了兩個變量nomer的列表。 AdapterView.AdapterContextMenuInfo acmi =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();當你點擊列表的第一個位置時,nomer是acmi.id – user1706819
對於列表B中屬於這個位置的所有項目,acmi.id = 0變爲nomer = 0。所以,當我刪除列表A中的位置時, B中0以下的所有項目也被刪除。但問題在於更新。我可以更新下一行,但其他人保持不變。 – user1706819