我用mySQL5.0,根据从页面传来的code进行模糊查询
String sql = "select * from book where bkcode like %?%";
报错如下
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bkcode like %'1'%' at line 1
请高手指点,1是从页面传来的

解决方案 »

  1.   

    很明显是sql语法错误like %?%
    改成like ?,不知道你是使用什么方法,如果是预处理或hibernate操作都是可以通过后来设置参数的
      

  2.   

    正解:
    String sql = "select * from book where bkcode like '%?%'";你少了2个单引号!?号部分用直接用int就行!不用特意加‘’
      

  3.   

    这样的模糊查询 真要命,你的查询效率会很慢效率会很低。多研究下SQL吧
      

  4.   

    如楼上所说但是,加以后程序走到下面第二剧就报错啊
     ps = jdbc.getConnection().prepareStatement(sql);
     ps.setString(1, bookForm.getBookCode());错误是:
    java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
    请各位指点啊
      

  5.   

    经过的的测试发现在仅仅运行sql语句的话是加双引号,
      

  6.   

    唉,没写过的就别乱说,误导人
    加单引号是什么概念? '%?%' 这就是一个字符串了,它的值是 %?% ,你的查询条件等同是
    bkcode = '%?%',SQL语句里没有任何参数,你还给它传参那必然数组越界这种情况的写法是不要在SQL语句里写%,SQL语句还是
    String sql = "select * from book where bkcode like ? ";
    而在传参数的时候就用setString(1,"%" + code+ "%")