SQL工作台:解决因没有明确指定JDBC的Statement参数,导致在Oracle下查询报错的BUG

This commit is contained in:
datagear 2019-04-06 19:53:26 +08:00
parent a967362c1f
commit fbce2dfe92
2 changed files with 25 additions and 3 deletions

View File

@ -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);
}
/**
* 模型查询结果
*

View File

@ -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命令
*