Existem duas maneiras de resolver este problema:-
(1) A forma mais simples é encapsular os parâmetros e a cadeia de consulta na exceção. Isso não resolverá seu problema 100%, mas será descritivo o suficiente para lidar com o erro. Fragmento de código abaixo-
String param = 100;
String QUERY_STRING = "SELECT * FROM table WHERE id = ? ";
try {
stmt.setString(1, param);
Preparedstatement stmt = con.prepareStatement( QUERY_STRING )
stmt.executeUpdate( );
}
catch (SQLException exc) {
throw new RuntimeException(QUERY_STRING + " os parâmetros são: " + param );
}
(2) Você pode criar um método utilitário onde passará a cadeia de consulta e a lista de parâmetros. Basta substituir todos os '?' pelo parâmetro correspondente. Fragmento de código abaixo-
String param = 100;
String QUERY_STRING = "SELECT * FROM table WHERE id = ? ";
try {
stmt.setString(1, param);
Preparedstatement stmt = con.prepareStatement( QUERY_STRING )
stmt.executeUpdate( );
}
catch (SQLException exc) {
String query = getQueryString(QUERY_STRING, param);
throw new RuntimeException(query);
}
Nota: para um método generalizado, passe o segundo argumento como Lista, para que possa inserir qualquer quantidade arbitrária de parâmetros na consulta.
Espero que isso resolva seu problema.