1. PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE COF_NAME IN (?)");updateSales.setString(1, "Espresso,French_Roast");

解决方案 »

  1.   

    1. PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE trim(COF_NAME) IN (?)");
    updateSales.setString(1, "Espresso,French_Roast");
    当然前提是ORACLE数据库
      

  2.   

    具体的我也不很清楚。
    但是有没有结果,你把整个命令在DBA中执行一下看看,有没有结果?有的话,你在一点点修改程序,否则都是白搭。
      

  3.   

    to all:
    我是oracle。现在:
    PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE trim(COF_NAME) IN (?)");
    updateSales.setString(1, "Espresso");
    有结果。
    但是:
    PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE trim(COF_NAME) IN (?)");
    updateSales.setString(1, "Espresso,French_Roast");
    没有结果。
      

  4.   

    你不用in不就可以了嘛,用两个参数加or代替in也是一样的效果呀???要多,就再加。
      

  5.   

    PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE trim(COF_NAME) IN ('?','?')");
    updateSales.setString(1, "Espresso");
    updateSales.setString(2, "French_Roast");
      

  6.   

    PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE trim(COF_NAME) IN ('?','?')");
    updateSales.setString(1, "Espresso");
    updateSales.setString(2, "French_Roast");
      

  7.   

    那就用动态SQL,直接传个动态生成的SQL语句进去。
      

  8.   

    那就用不着用PreparedStatement了,我现在sql文是写在文件中的,就是SELECT * FROM COFFEES WHERE trim(COF_NAME) IN (?)这种形式,sun提供这种形式应该是能用的吧。有人用过PreparedStatement的in么?
      

  9.   

    它是不是把"Espresso,French_Roast"当成了一个字符串,所以查不到阿。但是怎么解决阿?
      

  10.   

    PreparedStatement的实际意思是将sql语句当作一个存储过程,先在数据库中编译好,再用参数调用,因此参数不定就不能用。
    PreparedStatement的局限性其实挺大的,除了上面的以外,还有分时间段统计问题:如果用户只输入开始时间,就统计到目前为止的数据,如果只输入结束时间,就统计这个时间以前的数据,如果两个时间都输入,就统计两个时间之间的数据。这也是参数不固定。
    另外,从由于是先按存储过程编译后执行的,各种数据库系统实现起来可能有一些差别,如果要做数据库的移植也可能有一些问题。
      

  11.   

    PreparedStatement updateSales = con.prepareStatement("SELECT * FROM COFFEES WHERE COF_NAME IN ?");
    updateSales.setString(1, "('Espresso','French_Roast')");
      

  12.   

    to rocshaw(太阳鸟):也不好用啊。
      

  13.   

    建议把查询语句作为字符串提到外面处理,得到完整的sql语句