0

Problem : Passing parameters does not work with query having LIKE Clause

I am trying to pass a parameter in the parametrized query.

Working Fine:

String Query = "Select * from ABC where name=?";
Connection con = sql.getSqlDOConnector().getConnection();
PreparedStatement selectStmt = con.prepareStatement(selectQuery);
selectStmt.setString(1, "ABC");
ResultSet rs5 = selectStmt.executeQuery();

Having Issues:

 String Query = "Select * from ABC where (LOWER(NAME) LIKE \'% ? %\')";
   Connection con = sql.getSqlDOConnector().getConnection();
   PreparedStatement selectStmt = con.prepareStatement(selectQuery);
   selectStmt.setString(1, "ABC");
   ResultSet rs5 = selectStmt.executeQuery();

I am getting

java.sql.SQLException: Invalid column index at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5303) at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5291) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setString(OraclePreparedStatementWrapper.java:278)

Any idea on why I am getting this error while working with Parametrized queries having LIKE clause? Any pointers would be helpful.

Gendaful
  • 5,522
  • 11
  • 57
  • 76
  • 1
    `PreparedStatement pstmt = con.prepareStatement("SELECT * FROM analysis WHERE notes like ?");` `pstmt.setString(1, "%ABC%");` – SatyaTNV Jul 31 '15 at 15:55
  • 1
    This has been answered several times before -- please search before posting. – T.J. Crowder Jul 31 '15 at 15:56
  • Hi Satya, So, if I am passing not hardcoded parameter ..something like below String Name = "Steve" and pstmt.setString(1,Name), then how would I add % in the setString? Thanks for ur help – Gendaful Jul 31 '15 at 15:59
  • 1
    Thanks @T.J.Crowder for pointing out the answer. This has helped. – Gendaful Jul 31 '15 at 16:07

0 Answers0