setString用于预处理语句不起作用

PT_*_*T_C 2 java mysql sql resultset prepared-statement

我正在尝试使用setString(index, parameter)Prepared Statements 的方法来创建一个ResultSet但它似乎没有正确插入.我知道查询是正确的,因为我在以后使用相同的(减去需要setString)else.这是我目前的代码:

**根据我的理解,ps.setString(1, "'%" + committeeCode + "%'");应该替换?查询,但我的输出说不然.任何帮助表示赞赏.

public String getUpcomingEvents(String committeeCode) throws SQLException{
        Context ctx = null;
        DataSource ds = null;
        Connection conn = null;
        PreparedStatement ps  = null;
        ResultSet rs = null;

    StringBuilder htmlBuilder = new StringBuilder();
    String html = "";

    try {
        ctx = new InitialContext();
        ds = (DataSource) ctx.lookup("java:ConnectDaily");
        conn = ds.getConnection();

        if(committeeCode != null){
            //get all events
            String queryStatement = "SELECT " + 
                    .......
                    "WHERE c.calendar_id = ci.calendar_id AND c.short_name LIKE ? " + 
                    "AND ci.style_id = 0 " + 
                    "AND ci.starting_date > to_char(sysdate-1, 'J') " + 
                    "AND ci.item_type_id = cit.item_type_id " + 
                    "ORDER BY to_date(to_char(ci.starting_date), 'J')";




            ps = conn.prepareStatement(queryStatement);

            ps.setString(1, "'%" + committeeCode + "%'");
            System.out.println(queryStatement);

            rs = ps.executeQuery();

            if (rs != null){
                while(rs.next()){
                    String com = rs.getString("name");
                    String comID = rs.getString("short_name");

                    String startTime = rs.getString("starting_time");
                    String endTime = rs.getString("ending_time");
                    String name = rs.getString("contact_name");
                    String desc = rs.getString("description");
                    String info = rs.getString("contact_info");
                    String date = rs.getString("directory");

                    htmlBuilder.append("<li><a href='?com="+committeeCode+"&directory=2014-09-10'>"+com+" - "+ date +" - "+startTime+" - "+endTime+"</a> <!-- Link/title/date/start-end time --><br>");
                    htmlBuilder.append("<strong>Location: </strong>"+comID+"<br>");
                    htmlBuilder.append("<strong>Dial-In:</strong>"+com+"<br>");
                    htmlBuilder.append("<strong>Part. Code:</strong>"+info+"<br>");
                    htmlBuilder.append("<a href='http://nyiso.webex.com'>Take me to WebEx</a>");
                    htmlBuilder.append("</li>");            
                    }
            }
            html = htmlBuilder.toString();
Run Code Online (Sandbox Code Playgroud)

...

    }catch (NamingException e) {
        e.printStackTrace();
        //log error and send error email
    } catch (SQLException e) {
        e.printStackTrace();
        //log error and send error email
    }finally{
        //close all resources here
        ps.close();
        rs.close();
        conn.close();
    }
    return html;

}
Run Code Online (Sandbox Code Playgroud)

}

产量

14:18:22,979 INFO  [STDOUT] SELECT  to_char(to_date(to_char(ci.starting_date), 'J'),'mm/dd/yyyy') as start_date,  to_char(to_date(to_char(ci.ending_date), 'J'),'mm/dd/yyyy') as end_date,  to_char(to_date(to_char(ci.starting_date), 'J'),'yyyy-mm-dd') as directory,  ci.starting_time,  ci.ending_time,  ci.description,  cit.description as location,  c.name,  c.short_name,  ci.add_info_url,  ci.contact_name,  ci.contact_info FROM calitem ci, calendar c, calitemtypes cit WHERE c.calendar_id = ci.calendar_id AND c.short_name LIKE ? AND ci.style_id = 0 AND ci.starting_date > to_char(sysdate-1, 'J') AND ci.item_type_id = cit.item_type_id ORDER BY to_date(to_char(ci.starting_date), 'J')
Run Code Online (Sandbox Code Playgroud)

man*_*uti 6

报价不需要setString:

ps.setString(1, "%" + committeeCode + "%");
Run Code Online (Sandbox Code Playgroud)

此方法将指定绑定String到第一个参数.它不会更改String保存的原始查询queryStatement.