动态生成update语句

我要修改一个对象的字段,但是每次修改的字段个数不确定,怎么样在只写一句update语句的情况下 动态生成update语句

上面的写法首先还得判断下是不是一个都没修改就传进来了,不然就挂了。 :lol:
非得要用JDBC,建议还是用些工具类。譬如BeanUtils...

这个好办啊,假设有个用户对象User, 你修改的时候总要传个user参数的吧,判断一下user中哪些属性是空的,空的那些属性属性说明是没有被修改的。
只需要更新那些不为空的属性。 因为楼主没有说清用什么框架或者还是直接用JDBC写了。假如是ibatis,直接在sql中做判断,假如使用JPA/Hibernate
只需要使用
[code="java"]
public void updateUser(User user){
User u = findUserById(user.getId());
u.setName(user.getName == null ? u.getName : user.getName());
......
}
[/code]

假设
[code="java"]
public class User {

private int id;
private String name;
private Integer age;
//更多属性

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getAge() {
    return age;
}

public void setAge(Integer age) {
    this.age = age;
}

}
[/code]

更新:
[code="java"]
//id肯定传过来
public void update(User u){
StringBuilder sql = new StringBuilder();
sql.append("update user set ");
if(u.getName() != null && !"".equals(u.getName())){
sql.append("name = ").append(u.getName()).append(" ,");
}
if(u.getAge() != null){
sql.append("age = ").append(u.getAge()).append(",");
}
//.........继续处理,并且到最后把最后一个逗号去掉
//.......
sql.append(" where user.id = ").append(u.getId());
}
[/code]

哥们,练练手就行了,方便还是用框架吧。太繁琐了。 临时随便写写的,希望能帮到你。

我也需要一个这样的UPDATE函数,可以实现动态的UPDATE sql语句。

QString sql="UPDATE data_addresss SET name= ":name",sex = ":sex",age = ":age" WHERE data_id = ":data_id"

query.bindValue(":name",name);
query.bindValue(":sex",sex);
query.bindValue(":age",age);

除了这种手动判断值,来动态生成sql语句。

可不可以通过参数绑定实现呢??????