本帖最后由 blackthought 于 2010-09-20 17:28:47 编辑

解决方案 »

  1.   

    LOG LOG LOG LOG LOG?
      

  2.   

    delete from test where in
    可以啊
      

  3.   

    传三个的话,需要写三个“?”delete test where id in(?, ?, ?)否则的话,这 SQL 应该自己拼出来。
      

  4.   

      delete test where id in (1,2,3) 是可以的,
     如果有错,还请楼主把代码贴出来吧!
      

  5.   

    ps=con.prepareStatement("delete test where id in (?)");
    ps.setString(1,"1,2,3");
    ps.executeUpdate();

    代码就这么简单啊,报错的。这样就没问题
    ps=con.prepareStatement("delete test where id in (?)");
    ps.setString(1,"1");
    ps.executeUpdate();
      

  6.   

    用+在in后面连接字符串或者用循环以,分割取出id。
      

  7.   

    是这样写的啊,肯定是你拼写的sql语句错误。。
      

  8.   


    这样是肯定不行的,
    因为prepareStatement本来就是为了防止sql注入才引进的。
    in (?)——>"1,2,3"
    它会把"1,2,3"当作一个完整的字符串传进sql文,而不会把逗号作为sql的分隔符。
    也就是说他只是在检索符合id = '1,2,3'的记录。
    而不是id = '1' or id = '2' or id = '3'的记录。
    这种情况下必须用
    delete test where id in (?,?,?)
    若不知道参数的个数可以循环拼n个?号,总之一个参数一个问号。
      

  9.   

    他报的是什么错误? 是SQL错误? 还是执行后没有反应.
    你的id列表是字符串的吗? 数据库是什么?
      

  10.   

    Integer [] arr ={2,3,4};
    String prop = "";
    for(Integer i : arr){
      prop +="?,";
    }
    String sql = "delete  from t where id in ("+prop.substring(0,prop.length()-1)+")";
    pst = conn.prepareStatement(sql);
    for(int i =0 ;i<arr.length;i++){
      pst.setInt(i+1, arr[i]);
    }
    pst.executeUpdate();
      

  11.   

    ps=con.prepareStatement("delete from test where id in (?,?,?)");
    ps.setString(1,"1");
    ps.setString(2,"2");
    ps.setString(3,"3");
    ps.executeUpdate();