Java – Set parameters dynamically to prepared Statement in JDBC

javajdbc

I have a common class for all DAO's where we will read queries and execute them as below. I will send parameters from DAO to this class.

Connection connection = Queries.getConnection();
String query = Queries.getQuery(queryName);//Queries i will get from xml
PreparedStatement preparedStatement =  connection.prepareStatement(query);

what is the best way to set parameters dynamically to prepared Statement in JDBC. I believe, we don't have named parameters concept in JDBC as we have in spring JDBC. We are only simple JDBC in our project.

Best Answer

write something like this:

public static int mapParams(PreparedStatement ps, Object... args) throws SQLException {
    int i = 1;
    for (Object arg : args) {         
         if (arg instanceof Date) {
        ps.setTimestamp(i++, new Timestamp(((Date) arg).getTime()));
    } else if (arg instanceof Integer) {
        ps.setInt(i++, (Integer) arg);
    } else if (arg instanceof Long) {
        ps.setLong(i++, (Long) arg);
    } else if (arg instanceof Double) {
        ps.setDouble(i++, (Double) arg);
    } else if (arg instanceof Float) {
        ps.setFloat(i++, (Float) arg);
    } else {
        ps.setString(i++, (String) arg);
    }
   }
  }
}

and in the queries just use '?' where you need to set the parameter.

I know that this is old school code, but just to give some minimalistic example...

Related Topic