Java中like的遇见的问题,取关键字不能取变量内容而是取变量的名字

like取关键字 的时候取变量的名字没有取到内容。

String str1 =txf.getText();
Statement stmt = con.createStatement();
String sql="select * from contactos where id like '%str1%' ";
ResultSet rq=stmt.executeQuery(sql);

对str1的内容进行处理。

有两种解决方案。

方案一:

String sql="select * from contactos where id like '%str1%' ";

修改如下

String sql = "select * from contactos where id like '%" + str1 + "%'";

方案二:使用 PreparedStatement,可以避免 SQL 注入
修改如下:

        String str1 = txf.getText();
        String sql = "select * from contactos where id like concat('%',?,'%')";
        PreparedStatement stmt = con.prepareStatement(sql);
        stmt.setString(1, str1);
        ResultSet rq = stmt.executeQuery(sql);

如有帮助,请采纳。