使用java的mysql中的一个句子存在问题
我正在用java开发一个程序,其中有一些sql语句,这一句:
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");
当我试图用Java程序执行它时,我在INNER JOIN procesadores t1 ON t1.id_proveedor_cloud=t0.id_proveedor_cloud
附近有一个错误,但是当我在Navicat上执行这个查询时,我没有任何错误,错误在哪里,问题在哪里
# 1 楼答案
查询中缺少空格
举个例子
这将产生以下字符串:
FROM proveedores_cloud t0INNER JOIN procesadores t1 ON t1.id_proveedor_cloud=t0.id_proveedor_cloud
它不是有效的
SQL
,并且不能被查询解析器解析有关
String#concat
,请参见javadoc示例:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#concat(java.lang.String)
您只需在concats的末尾添加一个空格,例如在
FROM
子句后面,就可以解决这个问题:# 2 楼答案
在用Java创建的字符串中缺少空格。在Navicat中,每行之间都有换行符,但在Java中构建的字符串中缺少空格
你的绳子的一部分是
在其末端添加空格
基本上,对于所有不以逗号结尾的行,都需要这样做