在MYSQL数据库中,我有一个表名搜索。 当我写这个查询时,它成功执行了。
"select * from 'search' where path like %overview%"
但是当我用java编写它时:
String query="SELECT path FROM `search` WHERE path like %?% ";
java.sql.PreparedStatement st=con.prepareStatement(query);
st.setString(1,textField.getText() );
ResultSet rs=st.executeQuery();
它无效并显示错误:
com.mysql.jdbc.exception.jdbc4.MySQLSystaxErrorException: you have an error in sql syntax; check the manual that corresponds to your Mysql server version for the right Syntax to use near '%'overview'%' at line 1
答案 0 :(得分:4)
String query="SELECT path FROM `search` WHERE path like ? ";
java.sql.PreparedStatement st=con.prepareStatement(query);
st.setString(1,"%"+ textField.getText() + "%" );
ResultSet rs=st.executeQuery();
您可以尝试以上代码
答案 1 :(得分:0)
百分号是文字,如果你想在SQL文本中包含那些,并让MySQL将这些添加到你传入的值,你可以这样做:
String query="SELECT path FROM `search` WHERE path LIKE CONCAT('%',?,'%')";
另一种方法是从SQL文本语句中删除百分号
String query="SELECT path FROM `search` WHERE path LIKE ?";
然后将百分号添加/附加到您提供的值。