From fbce2dfe92fc75f3566a4db78cc37f4ffe3300e0 Mon Sep 17 00:00:00 2001 From: datagear Date: Sat, 6 Apr 2019 19:53:26 +0800 Subject: [PATCH] =?UTF-8?q?SQL=E5=B7=A5=E4=BD=9C=E5=8F=B0=EF=BC=9A?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=9B=A0=E6=B2=A1=E6=9C=89=E6=98=8E=E7=A1=AE?= =?UTF-8?q?=E6=8C=87=E5=AE=9AJDBC=E7=9A=84Statement=E5=8F=82=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=9C=A8Oracle=E4=B8=8B=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8A=A5=E9=94=99=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dbmodel/ModelSqlSelectService.java | 21 +++++++++++++++++-- .../web/sqlpad/SqlpadExecutionService.java | 7 ++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/datagear-dbmodel/src/main/java/org/datagear/dbmodel/ModelSqlSelectService.java b/datagear-dbmodel/src/main/java/org/datagear/dbmodel/ModelSqlSelectService.java index 69244144..8ded24ec 100644 --- a/datagear-dbmodel/src/main/java/org/datagear/dbmodel/ModelSqlSelectService.java +++ b/datagear-dbmodel/src/main/java/org/datagear/dbmodel/ModelSqlSelectService.java @@ -51,7 +51,7 @@ public class ModelSqlSelectService extends AbstractModelDataAccessObject ResultSet rs = null; try { - st = cn.createStatement(); + st = createStatement(cn); rs = st.executeQuery(sql); Model model = databaseModelResolver.resolve(cn, rs, UUID.gen()); @@ -83,7 +83,7 @@ public class ModelSqlSelectService extends AbstractModelDataAccessObject ResultSet rs = null; try { - st = cn.createStatement(); + st = createStatement(cn); rs = st.executeQuery(sql); return select(cn, sql, rs, model, startRow, fetchSize); @@ -156,6 +156,23 @@ public class ModelSqlSelectService extends AbstractModelDataAccessObject return modelSqlResult; } + protected Statement createStatement(Connection cn) throws SQLException + { + return createScrollableSelectStatement(cn); + } + + /** + * 创建用于可定位查询的{@linkplain Statement}。 + * + * @param cn + * @return + * @throws SQLException + */ + public static Statement createScrollableSelectStatement(Connection cn) throws SQLException + { + return cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); + } + /** * 模型查询结果。 * diff --git a/datagear-web/src/main/java/org/datagear/web/sqlpad/SqlpadExecutionService.java b/datagear-web/src/main/java/org/datagear/web/sqlpad/SqlpadExecutionService.java index 6380ce19..26c88947 100644 --- a/datagear-web/src/main/java/org/datagear/web/sqlpad/SqlpadExecutionService.java +++ b/datagear-web/src/main/java/org/datagear/web/sqlpad/SqlpadExecutionService.java @@ -432,7 +432,7 @@ public class SqlpadExecutionService { cn = getSchemaConnection(this.schema); cn.setAutoCommit(false); - st = cn.createStatement(); + st = createStatement(cn); } catch (Throwable t) { @@ -718,6 +718,11 @@ public class SqlpadExecutionService getMessage(this.locale, messageKey, messageArgs)); } + protected Statement createStatement(Connection cn) throws SQLException + { + return ModelSqlSelectService.createScrollableSelectStatement(cn); + } + /** * 睡眠等待SQL命令。 *