我有一条SQL语句:
SELECT COUNT(*) FROM angle_dispatchemployee d INNER JOIN angle_comtract c ON d.deid=c.dispatchemployee_deid WHERE c.rstate=? AND d.state=? AND c.company_acid IN(?)
c.rstate=0(或1) //常量
d.state=0(或1) //常量
c.company_acid 使用方法(getSpecialDispatch)的参数: int[] clientIDs.我想知道使用java.sql.PreparedStatement.怎么写ps.set(3,???) //假设int[] clientIDs=[1,2,3,4]我使用的是mssql2000数据库

解决方案 »

  1.   

    int[] clientIDs=[1,2,3,4]  写成 String str=(1,2,3,4)  ps.set(3,str)
      

  2.   

    你试过么?在jdbc转换时会把它当成字符串.执行的SQL就成了这样:... in('1,2.3.4')
      

  3.   

    我觉得应该是INT[]
     ps.set(3,int[])
      

  4.   

    我觉得也应该是Types.ARRAY,可看一下驱动的手册不支持setArray
      

  5.   

    c.company_acid = ?  这里用 =ps.set(3,clientIDs);   clientIDs 你之前的数组
      

  6.   

    SELECT COUNT(*) FROM 
    angle_dispatchemployee d INNER JOIN 
    angle_comtract c ON 
    d.deid=c.dispatchemployee_deid WHERE 
    c.rstate=? AND d.state=? AND c.company_acid =?这样,用ps.setArray?还是ps.setString?
      

  7.   

    sql能这么查么?把数组循环出来用or吧
      

  8.   

    and c.company_acid IN(?,?,?,?)有几个数就有几个问号
      

  9.   


    SELECT COUNT(*) FROM angle_dispatchemployee d INNER JOIN angle_comtract c ON d.deid=c.dispatchemployee_deid WHERE c.rstate=0 AND d.state=0 AND c.company_acid IN(1,2,3,4)这样是没问题的:找出公司ID为1,2,3,4的所有在职的员工
      

  10.   

    你真是天才!哪就没必要用PreparedStatement了
      

  11.   

    setString(3,?)  ? = (1,2,3,4),自己组装下啊.