如何在LIKE和'%'中使用Java变量在sql?

时间:2016-10-23 22:00:46

标签: java sql

当用户通过输入名称(一个人可以有名字和姓氏)搜索某些相关详细信息时,我想将数据加载到jTable中。我使用了以下查询,它没有给我结果。请告诉我这里有什么问题。

查询 - " SELECT idpersonal_idfirst_namelast_name FROM person_profile WHERE first_name喜欢? '%'或者last_name喜欢?'%&#39 ;;"

public static Profile searchProfileByName(String name) {
    Profile profile = new Profile();
    try {
        Connection conn = DbConnect.getDBConnection();
        PreparedStatement pst = conn.prepareStatement("SELECT  `id`, `personal_id` , `first_name` , `last_name` FROM  `person_profile` WHERE  `first_name` LIKE  ?'%' OR  `last_name` LIKE  ?'%';");
        pst.setString(1, name);
        pst.setString(2, name);
        ResultSet rs = pst.executeQuery();

        while (rs.next()) {
            profile.setId(rs.getString(1));
            profile.setPersonalId(rs.getString(2));
            profile.setFirstName(rs.getString(3));
            profile.setLastName(rs.getString(4));
        }
        conn.close();

        return profile;
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

我习惯于连接'%'在这样的参数:

PreparedStatement pst = conn.prepareStatement("SELECT first_name FROM  person_profile WHERE first_name LIKE ?");
...
pst.setString(1, StringUtils.defaultIfBlank(name, "") + "%");