我在用PreparedStatement写参数查询时遇到这个问题PreparedStatement ps=conn.prepareStatement("select * from tabA "+
"where title like '%?%'");
ps.setString(0,"sth");意思很简单,我希望ps.setString(0,"sth");能替换掉sql语句中的?号,而实际上无法做到请问要如何才能实现这功能,而不用字符串拼接呢?

解决方案 »

  1.   

    好像不行,就算你
    PreparedStatement ps=conn.prepareStatement("select * from tabA "+
    "where title like ?");
    ps.setString(0,"%"+sth+"%");//sth 你要传入的变量
    只不过是把字符拼接挪到了ps.setString()里
    我也被这个问题困扰过
      

  2.   

    想想看,如果SQL把引号中的问号当参数了,而实际中确实需要传入一个有问号的字符串怎么办?
      

  3.   

    ps.setString(0,"sth")?????????
    ps.setString(1,"sth")
      

  4.   

    flyxxxxx() ( ) 信誉:112    Blog  2006-12-1 15:06:56  得分: 0  
     
     
       
    想想看,如果SQL把引号中的问号当参数了,而实际中确实需要传入一个有问号的字符串怎么办?  
     
    ============================\\?
      

  5.   

    ps.setString(0,"%" + sth + "%");可以吗?