Java 如何使用;“我喜欢什么地方?”;SQL中的命令

Java 如何使用;“我喜欢什么地方?”;SQL中的命令,java,sql,derby,Java,Sql,Derby,我试图在我的程序中使用WHERE-LIKE命令 我的代码 String searchCriteria = searchTextField.getText(); String searchCriteria1 ="'"+"%" + searchCriteria + "%"+"'";\ String query = "select ID,Priority,recipient,Sender,Label,Subject from Messages where Message like = '" + sea

我试图在我的程序中使用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:语法错误:在第1行第92列遇到“=”。
不确定我的语句有什么问题

它很可能是一些非常愚蠢和小的东西,我希望你能帮助


谢谢你

似乎你在搜索条件中有两次单引号


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

您应该像这样使用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();

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

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

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