是这样的,我现在想更新数据库某表的所有字段,对象是从页面传来的,但是对象里的某些属性为空,现在也不知道具体更新哪个字段,如果用preparedstatement设值时,空好像不行,大家是怎样处理的,最好不是判断属性是否为空,然后拼sql那样的。

解决方案 »

  1.   

    1、用Hibernate,不用拼什么SQL,就是针对对象来进行操作.if(obj.属性 != null){
    ps.set...}2、不用框架的情况下。
    除了用拼凑,我也不知道了。期待有巧妙的方法。
      

  2.   

    是我sql有问题,preparedstatement。setXX(,)可以对问号设null啊
      

  3.   

    Hibernate 可以有选择性的更新
    dynamic-insert
    dynamic-update
    这样就可以~
      

  4.   


    public static void main(String[] args) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "root", "huabo");
    User user = new User();
    user.setName("xo");
    String sql = "update  t_user set name = ? , pass = ? where id = 1";
    PreparedStatement ps = con.prepareStatement(sql);
    if(user.getName() !=null){
    ps.setString(1, user.getName());
    }else{
    // 上面几个问号,下面就要写几个,这里的值可以先通过查询把对象的值拿到,如果为空的话就为原来值不进行修改。
    ps.setString(1, "kao");
    }
    if(user.getPassword() != null){
    ps.setString(2, user.getPassword());
    }else{
    ps.setString(2,"kao");
    }
    ps.executeUpdate(); }