Моих определений столбцов для таблицы Магазинов:Android/Ormlite - обновление только выбранные поля
@DatabaseField(canBeNull = false, columnName = C_SHOP_ID, index=true, id=true)
private String shopId;
@DatabaseField(dataType = DataType.BYTE_ARRAY, canBeNull = false, columnName = C_SHOP_ICON)
private byte[] shopIcon;
@DatabaseField(canBeNull = false, columnName = C_SHOP_DETAILS)
private String shopDetails;
@DatabaseField(canBeNull = false, columnName = C_SHOP_NAME)
private String shopName;
@DatabaseField(canBeNull = false, columnName = C_SHOP_SHORT_DESCRIPTION)
private String shopShorDescription;
Далее, чтобы выполнить обновление (или вставить) новая строка:
public void addOrUpdateShop(Shops c)
{
try
{
//getHelper().getShopItemsDao().create(c);
getHelper().getShopItemsDao().createIfNotExists(c);
}
catch (SQLException e)
{
e.printStackTrace();
}
}
Иногда, не все полей потребность которые будут изменены при выполнении обновления. Например, shopDetails или shopIcon (большое изображение блоба) не должны обновляться и оставить как есть. Это указывается конкретным значением поля. Например, если c.shopDetails
не должен быть обновлен в базе данных, она имеет значение "no change"
Теперь мне нужно сделать ряд обновлений, но каждый раз, когда c.ShopDetails равна "no change"
, shopDetails поле в моей таблице не должно быть обновлена, поэтому поле значение в таблице не будет изменено. Однако следует обновлять другие поля.
Без ormlite мне нужно будет написать все соответствующие запросы на обновление, чтобы исключить некоторые столбцы из инструкции обновления, поскольку это необходимо. Есть ли простой способ сделать то же самое с ormlite (без написания сырых sql-запросов)?
Кроме того, мне нужно, чтобы создать новую строку, если не существует (так, обновление строитель не очень хорошо для этого, так как я могу только обновить существующие поля с ним)
Извините, вы можете это объяснить? Как исключить некоторые поля из обновлений и какая разница с моим предыдущим решением? – user1209216
Я обновил anwser –
Хорошо, но все же обновление заменяет все поля в строке, с теми же значениями + только один из них (имя) с новым значением. Это не то, что я хочу, я хочу обновить только выбранное поле, а не заменять других теми же значениями. Кроме того, я хочу избежать выбора старого объекта. – user1209216