这是源码:
StringBuffer query = new StringBuffer();
query.append(" delete from tc_yw_jobs_integrated t1 where 1=1 ");   if(id!=null && id.trim().length()>0  ) 
query.append(" and t1.JOB_ID in(?)");

Object[] obj = {id};

return ManagerFactory.getInstance().getCommonDaoIMP().exeUpdate(query.toString(),obj);
在实际执行后打印出来的删除语句是这样的:delete from tc_yw_jobs_integrated t1 where 1=1  and t1.JOB_ID in('71,72');其中id是int类型,在传参数的工程中用的是?方式,这样就多出了删除语句参数的括号内多了两个单引号,导致无法正确执行sql语句,请问怎样处理才能把单引号去掉???

解决方案 »

  1.   

    将obj数组中的ID,遍历出来,组拼成ID串。
      

  2.   

    能详细解答下么? 
    id传过来后本身是不带单引号的,单引号引起的原因是:
    query.append(" and t1.JOB_ID in(?)");
    in()中才有的单引号吧!
      

  3.   

    这个getCommonDaoIMP().exeUpdate()方法是你自己实现的吧,
    看看里面怎么操作的,不能改吗?
      

  4.   

    那你就
    String idStr = "";
    for(int i = 0; i < obj.length; i++) {
      idStr += obj[i].toString();
    }return ManagerFactory.getInstance().getCommonDaoIMP().exeUpdate(query.toString(),idStr);
      

  5.   

    你可以在exeUpdate方法里,吧数组遍历下就可以了
      

  6.   

    in('71,72');
    既然是int类型的主键
    这样貌似不对
    应该in(71,72);
      

  7.   


    你可以不用预处理的方式塞值,直接拼。
    query.append(" and t1.JOB_ID in(";for(int i = 0; i < obj.length; i++){
     if(i > 0)
    query.append(",");
    query.append(Integer.parseInt(obj[i].toString));
    }
    query.append(")");
      

  8.   

    你在传入id的时候 自己处理一下在传到delete啊..