想执行一个模糊查询, sql语句是:"SELECT * FROM teacher WHERE t_name LIKE %?%";
  其中想通过文本框获取值,用setString()方法将值传入sql语句的?中,但是执行,总是有异常
,说sql语法有问题。
  该怎么解决SQL异常

解决方案 »

  1.   

    ?用'xxx'替换后去数据库执行一下。
    oracle改成
    SELECT * FROM teacher WHERE t_name LIKE '%'||?||'%'
      

  2.   

    试试
    String sql = "SELECT * FROM teacher WHERE t_name LIKE ?";
    PreparedStatement pst = cnn.prepareStatement(sql);
    pst.setString(1, "%"+name+"%");//name是你的传值不然把你的报什么错,贴出来看下。
      

  3.   

    可以不用setString()方法:
    sql="select * from teacher where t_name like '%"+setString()方法中要设置的值+"%'";
      

  4.   

    像你这样问题解决了,但是为什么把%写在sql语句中执行就会有错误呢?
      

  5.   

    SELECT * FROM teacher WHERE t_name LIKE %?%
    替换成
    SELECT * FROM teacher WHERE t_name LIKE %'abc'%
    有可能不报错吗