String sql = "select con from table_name where con like '%?%'"; // ?号是占位符
PreparedStatement prepare = conn.prepareStatement(sql);
prepare.setString(1,"a");
会报错: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).当用 String con = "a";
     sql = "select con from table_name where con like '%"+ con +"%'";
     prepare.executeQuery();
    时,就不会报错了.
为什么在关键字'like'后面用占位符的时候就会出错呢?

解决方案 »

  1.   

    String sql = "select con from table_name where con like ?"; // ?号是占位符
    PreparedStatement prepare = conn.prepareStatement(sql);
    prepare.setString(1,"%a%");that's all!
      

  2.   

    '%?%',这样写?号只是字符串%?%中的一个字符,并不是占位符,没有了占位符prepare.setString(1,"a")时就找不到对应的占位符了。String sql = "select con from table_name where con like ?"; // ?号是占位符
    PreparedStatement prepare = conn.prepareStatement(sql);
    prepare.setString(1,"%"+con+"%");//con作为参数传进来