From e6852c2cd0c09b47c954d20332d4ad0c2f37b3be Mon Sep 17 00:00:00 2001 From: jacky6024 Date: Wed, 27 Dec 2017 12:29:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BASQL=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B=E6=94=AF?= =?UTF-8?q?=E6=8C=81=EF=BC=8CSQL=E6=95=B0=E6=8D=AE=E9=9B=86=E4=B8=ADSQL?= =?UTF-8?q?=E4=BB=A5call=E5=85=B3=E9=94=AE=E5=AD=97=E5=BC=80=E5=A4=B4?= =?UTF-8?q?=EF=BC=8C=E5=BC=95=E6=93=8E=E5=B0=86=E8=AF=86=E5=88=AB=E4=B8=BA?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ureport/console/designer/DatasourceServletAction.java | 4 ++-- .../ureport/definition/dataset/SqlDatasetDefinition.java | 2 +- .../main/java/com/bstek/ureport/utils/ProcedureUtils.java | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java b/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java index fe073a5..582bd6e 100644 --- a/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java +++ b/ureport2-console/src/main/java/com/bstek/ureport/console/designer/DatasourceServletAction.java @@ -175,7 +175,7 @@ public class DatasourceServletAction extends RenderPageServletAction { conn=buildConnection(req); Map map = buildParameters(parameters); sql=parseSql(sql, map); - if(sql.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sql)){ List fieldsList = ProcedureUtils.procedureColumnsQuery(sql, map, conn); fields.addAll(fieldsList); }else{ @@ -227,7 +227,7 @@ public class DatasourceServletAction extends RenderPageServletAction { try{ conn=buildConnection(req); List> list=null; - if(sql.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sql)){ list=ProcedureUtils.procedureQuery(sql, map, conn); }else{ DataSource dataSource=new SingleConnectionDataSource(conn,false); diff --git a/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java b/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java index 68ea82b..5f55917 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/definition/dataset/SqlDatasetDefinition.java @@ -65,7 +65,7 @@ public class SqlDatasetDefinition implements DatasetDefinition { } Utils.logToConsole("RUNTIME SQL:"+sqlForUse); Map pmap = buildParameters(parameterMap); - if(sqlForUse.trim().toLowerCase().startsWith("call ")){ + if(ProcedureUtils.isProcedure(sqlForUse)){ List> result = ProcedureUtils.procedureQuery(sqlForUse,pmap,conn); return new Dataset(name,result); } diff --git a/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java b/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java index 631edd0..e4822cd 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/utils/ProcedureUtils.java @@ -36,6 +36,11 @@ import com.bstek.ureport.exception.ReportException; * @since 2017年12月27日 */ public class ProcedureUtils { + public static boolean isProcedure(String sql){ + sql=sql.trim().toLowerCase(); + return sql.startsWith("call "); + } + public static List procedureColumnsQuery(String sql,Map pmap,Connection conn){ CallableStatement cs=buildProcedureCallableStatement(sql, pmap, conn); ResultSet rs=null;