2012-09-19 3 views
16

나는 안드로이드 애플리케이션을 위해 이미 생성 된 데이터베이스를 가지고 있으며 SQLLite에 대한 질의를 위해 ORMLite를 사용하고 있습니다.ORMLite로 열을 업데이트하는 방법

범주에 열을 추가 했으므로 해당 열에 데이터를 삽입하고 싶습니다. 행이 있습니다 (예 :

catId=5 catname="food" catType=? 

나는 catId에 기초 catType를 업데이트합니다. 이 catType 열을 ORMLite의 catId으로 업데이트하려면 어떻게해야합니까?

나는이 방법을 사용하고 있습니다 :

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

나에게 더 나은 솔루션을 제공하십시오.

+0

무엇이 잘못 되었습니까? – njzk2

+0

njzk2 일 때 1 –

답변

67

catId를 기준으로 catType을 업데이트하고 싶습니다. 이 catType 열을 ORMLite의 catId로 업데이트하려면 어떻게해야합니까?

ORMLiteUpdateBuilder을 지원합니다. 여기 당신이 그것을 사용할 수있는 방법은 다음과 같습니다

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

이 더 많은 예제에 대한 UpdateBuilder docs를 참조하십시오.

+4

우수 :-) 대신 2 데이터베이스 작업이 수행되기 때문에 속도가 느립니다. –

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

동일한 엔티티 (그러나 다른 필드)에 대한 동시 업데이트는 서로를 무시할 수 있습니다. – Mattan

관련 문제