【问题标题】:unable to execute "like" query in java无法在java中执行“like”查询
【发布时间】:2015-07-10 05:01:42
【问题描述】:

在 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

【问题讨论】:

  • 什么错误?为什么要重音而不是单引号?
  • 我没有 10 名声望,所以我无法添加图片,所以我需要写下那个错误:
  • 您通常将堆栈跟踪添加为文本,而不是图片。
  • 错误是:com.mysql.jdbc.exception.jdbc4.MySQLSystaxErrorException: you have an error in sql syntax;检查与您的 Mysql 服务器版本相对应的手册,以在第 1 行的 '%'overview'%' 附近使用正确的语法。

标签: java mysql swing


【解决方案1】:
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();

你可以试试上面的代码

【讨论】:

    【解决方案2】:

    百分号是文字,如果你想将它们包含在 SQL 文本中,并让 MySQL 将它们添加到你传入的值中,你可以这样做:

    String query="SELECT path FROM `search` WHERE path LIKE CONCAT('%',?,'%')";
    

    另一种方法是从 SQL 文本语句中删除百分号

    String query="SELECT path FROM `search` WHERE path LIKE ?";
    

    然后在您提供的值中添加/附加百分比字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多