JDBC中关于IN的使用问题:SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN('A','B','C')我想使用PreparedStatement setObject()设置参数的方法来构建语句SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?)
怎么来构建?

解决方案 »

  1.   

    SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?,?,?)
    PreparedStatement ps;
    ……
    ……
    ps.setString(1,'A');
    ps.setString(2,'B');
    ps.setString(3,'C');这样就可以了
      

  2.   

    SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?)
    ps.setString(1,"楼主想要拼的字符串");
      

  3.   

    6楼的办法不行的用PreparedStatement 传多参数时,如果参数个数不确定,还想使用?参数避免sql注入,只有一个办法
    根据传递的参数个数,拼接sql语句为 SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?, ? ,?, ……)
    然后再依次
    ps.setString(1, "参数1");
    ps.setString(2, "参数2");
    ps.setString(3, "参数3");
    ……
    除此以外,没其他办法。
      

  4.   

    如果不需要考虑sql注入,也可以采用把参数直接拼到sql语句中的办法,不过不推荐
      

  5.   

    同意#9楼
     SELECT * FROM TABLE_A WHERE A_COLUMN_NAME IN(?, ? ,?, ……)传参数我建议传送个数组
    String [] param={参数1,参数2,参数3......}
    在赋值直接用for循环赋值
    for(int i=0;i<=param.ength;i++){
    pst.setString(i+1,param[i])
    }