I’m developing a program with java where I have some sql sentences, this one:
SQL="SELECT t0.id_proveedor_cloud as id_proveedor_cloud,";
SQL.concat("t1.id_procesador as id_procesador,");
SQL.concat("t2.id_tarea as id_tarea,");
SQL.concat("DATE_FORMAT(t2.f_ultima_ejecucion,'%d-%m-%Y %H:%i:%s') as f_ultima_ejecucion,");
SQL.concat("t3.id_esquema_asociado as id_esquema_asociado,");
SQL.concat("t3.descripcion as descripcion_esquema,");
SQL.concat("t3.cadena_conexion_sql as cadena_conexion_sql,");
SQL.concat("t3.url_portal_ccis as url_portal_ccis");
SQL.concat("FROM proveedores_cloud t0");
SQL.concat("INNER JOIN procesadores t1 ON t1.id_proveedor_cloud=t0.id_proveedor_cloud");
SQL.concat("INNER JOIN tareas t2 ON t2.id_procesador = t1.id_procesador");
SQL.concat("INNER JOIN esquemas_asociados t3 ON t3.id_proveedor_cloud=t0.id_proveedor_cloud");
SQL.concat("WHERE t0.id_proveedor_cloud =1");
SQL.concat("AND t1.activo = true");
SQL.concat("AND t2.activa = true");
SQL.concat("AND (TIMESTAMPDIFF(MINUTE,t2.f_ultima_ejecucion,CURRENT_TIMESTAMP) >= t2.iniciar_cada)");
SQL.concat("ORDER BY t0.id_proveedor_cloud,t2.orden");
When I try to execute it with my program in Java I have a mistake near INNER JOIN procesadores t1 ON t1.id_proveedor_cloud=t0.id_proveedor_cloud but when I execute this query on my Navicat, I don’t have any mistake, where is the mistake, where is the problem?
You are missing the spaces in your query.
For example here
This will yield to this string:
FROM proveedores_cloud t0INNER JOIN procesadores t1 ON t1.id_proveedor_cloud=t0.id_proveedor_cloudWhich is no valid
SQLand can’t be parsed by the query parser.See the javadoc example for
String#concat:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#concat(java.lang.String)
You can simply fix it, by adding a space at the end of your concats, for example after your
FROMclause: