删除行我有一个这样的数据库:更新和数据库
"id", "ingredients_id", "recipes_id", "qta", "created_at"
"1", "Acqua", "Ricetta1", "100", "2014-04-05 10:34:13"
"2", "Alcolico Gin", "Ricetta1", "200", "2014-04-05 10:34:13"
"3", "Amido di Mais", "Ricetta1", "300", "2014-04-05 10:34:13"
"4", "Acqua", "Ricetta2", "330", "2014-04-05 10:34:15"
"5", "Alcolico Gin", "Ricetta2", "440", "2014-04-05 10:34:15"
"6", "Amido di Mais", "Ricetta2", "550", "2014-04-05 10:34:15"
我要更新一些值未在表中,示例只在“Ricetta2”的量。 最好是删除所有行并用新数据重新创建新行或更新仅更改的值? 我这么认为是因为如果用户在重新创建配方“Ricetta2”时删除了一种配料,我只有两种配料。 是正确的还是有更新/删除表的最佳方法?
我用这个代码更新:
public long Updatedb_Ingredienti_for_db_Recipe(StructRicetta rct) {
ContentValues values = new ContentValues();
long Ingredienti_id = -1;
int num = rct.get_num_Ingredienti();
for (int i = 0; i< num;i++) {
values.put(KEY_RECIPES_ID, rct.get_db_Ricetta_Name());
values.put(KEY_INGREDIENTS_ID, rct.itemsIngredients.get(i).getNome());
values.put(KEY_QTA, rct.itemsIngredients.get(i).getQta());
values.put(KEY_CREATED_AT, getDateTime());
// updating row
Ingredienti_id = dbWrite.update(TABLE_INGREDIENTS_RECIPES, values, KEY_RECIPES_ID + " = ", new String[] { String.valueOf(rct.get_db_Ricetta_Name()) });
if(Ingredienti_id < 0)
break;// errore scrittura
}
return Ingredienti_id;
}
但这代码修改所有的行...
行,数据来自ListView,所以如果用户在ListView中删除了一行,那么如何更新缺少的行呢? 最好删除数据并重写或不重写? –
您无法更新缺少的行。如果用户删除(在ListView上)某个项目,删除该行(语法与更新相同)。那么你应该从ListView中删除该项目以及防止用户“更新”的项目不存在的情况下 – markubik