修改数据也需要懂得使用where多条件语句
- 条件表达式 =,!=,>,<,>=,<=
- 多条件 and or , and和or都可以无限连接
/**
* 方法修改数据库数据
*/
public void updatePersonData(PersonModel model)
{
//条件表达式 =,!=,>,<,>=,<=
//多条件 and or and和or都可以无限连接
//多条件示例 _id>=? and _id<=?
//多条件示例 _id>=? or _id=? or _id=?
//将数据添加至ContentValues
ContentValues values = new ContentValues();
values.put(VALUE_NAME,model.getName());
values.put(VALUE_ADDRESS,model.getAddress());
values.put(VALUE_ISBOY,model.getIsBoy());
values.put(VALUE_AGE,model.getAge());
values.put(VALUE_PIC,model.getPic());
//修改model的数据
getWritableDatabase().update(TABLE_NAME_PERSON,values,VALUE_ID+"=?",new String[]{""+model.getId()});
//将 _id>20 的数据全部修改成model 适合重置数据
getWritableDatabase().update(TABLE_NAME_PERSON,values,VALUE_ID+">?",new String[]{"20"});
//将 _id>=30 && _id<=40 的数据全部修改成model 适合重置数据
getWritableDatabase().update(TABLE_NAME_PERSON,values,VALUE_ID+">=? and "+VALUE_ID+"<=?",new String[]{"30","40"});
//将 _id>=40 || _id=30 || _id=20的 age 修改成18 (需先将model的数据修成成18) 这里and 和 or 的效果时一样的 因为_id是唯一的
int count = getWritableDatabase().update(TABLE_NAME_PERSON,values,VALUE_ID+">=?"+" or "+VALUE_ID+"=?"+" or "+VALUE_ID+"=?",new String[]{"40","30","20"});
// count 返回被修改的条数 >0 表示修改成功
Log.e(TAG, ""+ VALUE_ID+">=? and "+VALUE_ID+"<=?");
Log.e(TAG, ""+ VALUE_ID+">=?"+" or "+VALUE_ID+"=?"+" or "+VALUE_ID+"=?");
}
/**
* sql修改数据库数据
*/
public void updatePersonDataSql(PersonModel model)
{
//条件表达式 =,!=,>,<,>=,<=
//多条件 and or and和or都可以无限连接
//修改格式 update 表名 set 字段='字段值', 字段='字段值',… where 字段='字段值'
//多条件示例 update person set name='钢铁侠',isboy='1' where _id='2'
//多条件示例 update person set name='天地',isboy='1',age='79',address='山东省青岛市开平路53号国棉四厂二宿舍1号楼2单元204户甲',pic='[B@266d768b' where _id>='30' and _id<='40'
//多条件示例 update person set name='小二',isboy='1',age='18',address='河南南阳市八一路272号特钢公司',pic='[B@17560c26' where _id>='40' or _id='30' or _id='20'
//修改model的数据
String update1 = "update "+TABLE_NAME_PERSON+" set "+
VALUE_NAME+"="+"'"+model.getName()+"',"+
VALUE_ISBOY+"="+"'"+model.getIsBoy()+"',"+
VALUE_AGE+"="+"'"+model.getAge()+"',"+
VALUE_ADDRESS+"="+"'"+model.getAddress()+"',"+
VALUE_PIC+"="+"'"+model.getPic()+"'" + " where "+
VALUE_ID +"="+"'"+model.getId()+"'";
//将 _id>20 的数据全部修改成model 适合重置数据
String update2 = "update "+TABLE_NAME_PERSON+" set "+
VALUE_NAME+"="+"'"+model.getName()+"',"+
VALUE_ISBOY+"="+"'"+model.getIsBoy()+"',"+
VALUE_AGE+"="+"'"+model.getAge()+"',"+
VALUE_ADDRESS+"="+"'"+model.getAddress()+"',"+
VALUE_PIC+"="+"'"+model.getPic()+"'" + " where "+
VALUE_ID + ">="+"'"+"20"+"'";
//将 _id>=30 && _id<=40 的数据全部修改成model 适合重置数据
String update3 = "update "+TABLE_NAME_PERSON+" set "+
VALUE_NAME+"="+"'"+model.getName()+"',"+
VALUE_ISBOY+"="+"'"+model.getIsBoy()+"',"+
VALUE_AGE+"="+"'"+model.getAge()+"',"+
VALUE_ADDRESS+"="+"'"+model.getAddress()+"',"+
VALUE_PIC+"="+"'"+model.getPic()+"'" + " where "+
VALUE_ID + ">="+"'"+"30"+"'"+" and "+
VALUE_ID + "<="+"'"+"40"+"'";
//将 _id>=40 || _id=30 || _id=20的 age 修改成18 (需先将model的数据修成成18)
String update4 = "update "+TABLE_NAME_PERSON+" set "+
VALUE_NAME+"="+"'"+model.getName()+"',"+
VALUE_ISBOY+"="+"'"+model.getIsBoy()+"',"+
VALUE_AGE+"="+"'"+"18"+"',"+
VALUE_ADDRESS+"="+"'"+model.getAddress()+"',"+
VALUE_PIC+"="+"'"+model.getPic()+"'" + " where "+
VALUE_ID + ">="+"'"+"40"+"'"+" or "+
VALUE_ID + "="+"'"+"30"+"'"+" or "+
VALUE_ID + "="+"'"+"20"+"'";
//其实前面set语句都一样,后面的where 不一样
getWritableDatabase().execSQL(update4);
}
sqlite也无非就创建、增、删、改、查、更新。