2012-09-19 2 views
16

J'ai une base de données déjà créée pour l'application Android et j'utilise ORMLite pour interroger SQLLite.Comment mettre à jour la colonne avec ORMLite

J'ai ajouté une colonne dans la catégorie et je veux insérer des données dans cette colonne. J'ai rangée, par ex.

catId=5 catname="food" catType=? 

Je veux mettre à jour catType sur la base de catId. Comment puis-je mettre à jour cette colonne catType avec le catId dans ORMLite.

J'utilise cette approche:

Dao<Category, Integer> catDao = getHelper().getCategoryDao(); 
QueryBuilder<Category, Integer> queryBuilder = catDao.queryBuilder(); 
queryBuilder.where().eq("categoryId", 5); 
PreparedQuery<Category> pq = queryBuilder.prepare(); 
Category category = catDao.queryForFirst(pq); 
category.setCategoryType("BarType"); 
catDao.createOrUpdate(category); 

S'il vous plaît me fournir une meilleure solution.

+0

Quel est le problème avec celui-ci? – njzk2

+0

njzk2, il est plus lent car il fait 2 opérations de base de données au lieu de 1 –

Répondre

67

Je veux mettre à jour catType sur la base de catId. Comment puis-je mettre à jour cette colonne catType avec le chatId dans ORMLite.

ORMLite prend également en charge un UpdateBuilder. Voici comment vous pouvez l'utiliser:

UpdateBuilder<Category, Integer> updateBuilder = catDao.updateBuilder(); 
// set the criteria like you would a QueryBuilder 
updateBuilder.where().eq("categoryId", 5); 
// update the value of your field(s) 
updateBuilder.updateColumnValue("catType" /* column */, "BarType" /* value */); 
updateBuilder.update(); 

Voir la UpdateBuilder docs pour plus d'exemples.

+4

excellent :-) doit être marqué comme réponse correcte –

2
Dao<Category, Integer> catDao = getHelper().getCategoryDao(); 
List <Category> categoryList = catDao.queryForAll(); 
for (Category c: categoryList) { 
    c.setCategoryType("BarType"); 
    catDao.update(c); 
} 
+0

Des mises à jour simultanées à la même entité (mais sur des champs différents) peuvent se chevaucher. – Mattan

Questions connexes