2012-09-19 13 views
16

Tengo una base de datos ya creada para la aplicación Android y estoy usando ORMLite para la consulta a SQLLite.Cómo actualizar la columna con ORMLite

He agregado una columna en la categoría y deseo insertar datos en esa columna. Tengo una fila, p.

catId=5 catname="food" catType=? 

Quiero actualizar catType sobre la base de catId. ¿Cómo puedo actualizar esta columna catType con el catId en ORMLite?

estoy usando este enfoque:

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); 

por favor me proporcione una mejor solución.

+0

¿Qué pasa con este? – njzk2

+0

njzk2, es más lento porque realiza 2 operaciones de base de datos en lugar de 1 –

Respuesta

67

Quiero actualizar catType sobre la base de catId. ¿Cómo puedo actualizar esta columna catType con catId en ORMLite?

ORMLite también es compatible con UpdateBuilder. He aquí cómo se podría utilizar:

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(); 

Véase el UpdateBuilder docs para más ejemplos.

+4

excelente :-) debe marcarse como respuesta correcta –

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

Las actualizaciones concurrentes a la misma entidad (pero en campos diferentes) pueden prevalecer sobre las demás. – Mattan

Cuestiones relacionadas