【问题标题】:How to use the "WHERE LIKE" command in SQL如何在 SQL 中使用“WHERE LIKE”命令
【发布时间】:2015-02-20 00:56:23
【问题描述】:

我正在尝试在我的程序中使用 WHERE LIKE 命令。

我的代码

String searchCriteria = searchTextField.getText();
String searchCriteria1 ="'"+"%" + searchCriteria + "%"+"'";\
String query = "select ID,Priority,recipient,Sender,Label,Subject from Messages where Message like = '" + searchCriteria1 + "'";
        PreparedStatement pst = connection.prepareStatement(query);
        ResultSet rs = pst.executeQuery();
        table.setModel(DbUtils.resultSetToTableModel(rs)); 

代码解释

1.这段代码是从用户那里得到输入的。

2.创建一个包含搜索条件和条件两侧的“%”的字符串变量。

3.最后几行执行SQL查询。

我目前收到错误 java.sql.SQLSyntaxErrorException: Syntax error: Encountered "=" at line 1, column 92. 并且不确定我的陈述有什么问题。

最有可能是很傻很渺小的东西,希望能帮到你。

谢谢

【问题讨论】:

  • 是的,这是一件愚蠢而渺小的事情。提示:在调用prepareStatement 之前打印出query
  • 你有一个 SQL 注入漏洞。

标签: java sql derby


【解决方案1】:

好像你在搜索条件中有两次单引号。

但在这种情况下,您需要使用带有绑定参数的预处理语句。

【讨论】:

    【解决方案2】:

    你应该像这样使用 PreparedStatement:

    String searchCriteria = searchTextField.getText();
    String query = "select ID,Priority,recipient,Sender,Label,Subject from Messages where Message like ?";
    PreparedStatement pst = connection.prepareStatement(query);
    pst.setString(1, "%" + searchCriteria + "%");
    ResultSet rs = pst.executeQuery();
    

    【讨论】:

      【解决方案3】:

      您可以将其放在查询本身并删除您的equal(=) 符号,而不是将您的modulus(%) 放入您的变量中。见下文:

      String searchCriteria1 =" + searchCriteria + ";
      String query = "SELECT ID,Priority,recipient,Sender,Label,Subject FROM Messages WHERE Message LIKE '%" + searchCriteria1 + "%'";
      

      【讨论】:

        猜你喜欢
        • 2013-10-17
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 2022-08-02
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        相关资源
        最近更新 更多