For me, the hard part of this example is figuring out how to use wildcard characters with your PreparedStatement parameter. I tried adding it directly to the SQL SELECT statement, then realized I just needed to use the ? character there, and then add the wildcards in the prepStmnt.setString() statement.
Here's a sample Java method that shows this PreparedStatement/SELECT/LIKE combination.
private String getTextList(){ JSONObject json = new JSONObject(); ArrayList>jsonobject> data = new ArrayList>jsonobject>(); JSONObject rows = null; String getTextListSQL = "SELECT * FROM texts WHERE UPPER(en) LIKE ? ORDER BY en ASC;"; String enFilter = ""; PreparedStatement prepStmnt = null; ResultSet rs = null; try { enFilter = (request.getParameter("enFilter") != null)? request.getParameter("enFilter"):"Mega"; textBean.setEnFilter(enFilter); prepStmnt = dbConn.prepareStatement(getTextListSQL); prepStmnt.setString(1, "%" + enFilter.toUpperCase() + "%"); rs = prepStmnt.executeQuery(); while(rs.next()){ rows = new JSONObject(); rows.put("id", rs.getInt("id")); rows.put("en", rs.getString("en")); rows.put("ru", rs.getString("ru")); data.add(rows); } json.put("data", data); } catch (SQLException e) { logger.error("getTextList() | SQLException", e); } catch (Exception e) { logger.error("getTextList() | Exception", e); } return json.toString(); }That is all ...
Another Examples on preparedstatement are here
ReplyDeleteJava PreparedStatement Example