我连的是sql数据库 
select * from sky where name like '%北%' 
这条sql语句在sql2000的查询分析器中是正确的,也可以查出关键字'北'相关的数据 
但在jsp里的jdbc中却不行啊`老是报语法错误!  //根据用户输入的数据查询数据 
    public List selectAll(String text) 
    { 
        List body = new ArrayList(); 
        try { 
            this.getconn(); 
            ps = conn.prepareStatement("select * from sky where name like '%?%'"); 
            ps.setString(1,text); 
            rs = ps.executeQuery(); 请教各位大侠在prepareStatement中怎么用like查询!小弟万分感谢!

解决方案 »

  1.   

     try {
                con = JDBConnection.getConnection();
                ps = con.prepareStatement(FinalConstants.MESS_SEARCH);
                ps.setString(1, '%' + keyword + '%');
                ps.setString(2, '%' + keyword + '%');
                rs = ps.executeQuery();如红色所指示
    '%' + keyword + '%'
      

  2.   

    ps = conn.prepareStatement("select * from sky where name like  '%?% '");  
    是不对的
      

  3.   

     public static ArrayList SearchMessage(String keyword)
     public static final String MESS_SEARCH = "select * from tbMessage where Title like ? or Content like ?  order by PubTime DESC";ps.setString(1,  '% ' + keyword +  '% '); 
    ps.setString(2,  '% ' + keyword +  '% '); 
      

  4.   

                ps = conn.prepareStatement("select * from baidu_kefu where name like ?");
                ps.setString(1,'%'+text+'%');
    我换成这样,语法是没错误了,可显示不出来数据哦!
      

  5.   

    ps = conn.prepareStatement("select * from sky where name like  '%?% '"); 
    ps.setString(1,text);  改为:
    ps = conn.prepareStatement("select * from sky where name like  ?"); 
    ps.setString(1,"%" + text + "%"); 
      

  6.   

    因为prepareStatement里的“?”,会自动加上单引号 ‘’ ,
    如select * from sky where name like   '%?%  ' 按你的写法,就成‘%‘?’%’,
    所以就要把 %% 当作参数一起传进去,楼上的写法是正确的
    ps = conn.prepareStatement("select * from sky where name like  ?"); 
    ps.setString(1,"%" + text + "%");
      

  7.   

    不知道这样可以吗
    ps = conn.prepareStatement( "select * from sky where name like "+"%"+"?"+"%");  
    ps.setString(1,text);
      

  8.   

    ps = conn.prepareStatement("select * from sky where name like  ?");  
    ps.setString(1,"%" + text + "%");这样没有错的和我写的那个是一样的