androidsqlite批量操作,Androidsqlite⼀条sql语句批量更新数据
提升效率
在Android 开发过程中遇到需要逐条输⼊内容然后统⼀保存的需求,数据很多,⼀条⼀条去更新的话效率⽐较低,本⽂讲⼀下⽤⼀条语句批量更新的⽅法。
实例采⽤的是【case when 】的技巧,看⼀下⽤法:
UPDATE mytable SET
myfield = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3)
然后看⼀下本⽂实例,此实例是更新每⾏中的三个字段,不同⾏的这三个字段的值是不同的,下⾯看代码:
/**
* 本例是根据guid字段更新数据表中的 value1,updateTime以及uploadFlag三个字段的值,他们的值是不⼀样的
* 采⽤ case when 语法⼀次新更新多条数据,⽽不是⼀条⼀条的去更新
*
* @param dataRecordTables 需要更新的数据
*
*/
public void update(ListdataRecordTables) {
StringBuffer stringBuffervalue1 = new StringBuffer();
StringBuffer stringBufferupdatetime = new StringBuffer();
StringBuffer stringBufferupdateflag = new StringBuffer();
StringBuilder guids = new StringBuilder();
guids.append("( '");
stringBuffervalue1.append(" SET value1 = CASE guid "); //需要更新的字段 value1
stringBufferupdatetime.append(" updateTime = CASE guid "); //需要更新的字段 updateTime
stringBufferupdateflag.append(" uploadFlag = CASE guid ");//需要更新的字段 uploadFlag
for (int i = 0; i < dataRecordTables.size(); i++) {
DataRecordTable data = (i);
批量更新sql语句if (i == dataRecordTables.size() - 1) {
stringBuffervalue1.append(" WHEN '" + Guid() + "' THEN '" + Value1() + "' \n End,");
stringBufferupdatetime.append(" WHEN '" + Guid() + "' THEN '" + UpdateTime() + "' \n End,");
stringBufferupdateflag.append(" WHEN '" + Guid() + "' THEN '" + UploadFlag() + "' \n End ");
guids.Guid() + "')");
} else {
stringBuffervalue1.append(" WHEN '" + Guid() + "' THEN '" + Value1() + "' \n ");
stringBufferupdatetime.append(" WHEN '" + Guid() + "' THEN '" + UpdateTime() + "' \n ");
stringBufferupdateflag.append(" WHEN '" + Guid() + "' THEN '" + UploadFlag() + "' \n ");
guids.Guid() + "','");
}
}
String sql = "Update " + getTABLE_NAME() + " " + String() + String() + String() + " WHERE guid in " + String();
}
其中getTABLE_NAME()⽅法是获取到表名,你可以直接换成你的表名。代码⽐较简单,有类似需求的可以简单修改使⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论