diff --git a/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/AbstractMetadataProvider.java b/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/AbstractMetadataProvider.java index 7d812c51..3f85d444 100644 --- a/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/AbstractMetadataProvider.java +++ b/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/AbstractMetadataProvider.java @@ -10,7 +10,6 @@ package com.gitee.dbswitch.provider.meta; import cn.hutool.core.text.StrPool; -import com.gitee.dbswitch.common.type.ProductTypeEnum; import com.gitee.dbswitch.common.type.TableIndexEnum; import com.gitee.dbswitch.provider.AbstractCommonProvider; import com.gitee.dbswitch.provider.ProductFactoryProvider; @@ -60,6 +59,15 @@ public abstract class AbstractMetadataProvider this.catalogName = catalogName; } + @Override + public void testConnection(Connection connection, String pingSql) { + try (Statement st = connection.createStatement()) { + st.execute(pingSql); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + @Override public List querySchemaList(Connection connection) { Set ret = new LinkedHashSet<>(); diff --git a/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/MetadataProvider.java b/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/MetadataProvider.java index 030c6d2c..c034bc63 100644 --- a/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/MetadataProvider.java +++ b/dbswitch-core/src/main/java/com/gitee/dbswitch/provider/meta/MetadataProvider.java @@ -30,6 +30,14 @@ public interface MetadataProvider { */ ProductTypeEnum getProductType(); + /** + * 测试连接(原始SQL语句) + * + * @param connection JDBC连接 + * @param pingSql 测试连接的SQL语句 + */ + void testConnection(Connection connection, String pingSql); + /** * 获取数据库的模式schema列表 * diff --git a/dbswitch-product/dbswitch-product-oceanbase/src/main/java/com/gitee/dbswitch/product/oceanbase/OceanbaseMetadataQueryProvider.java b/dbswitch-product/dbswitch-product-oceanbase/src/main/java/com/gitee/dbswitch/product/oceanbase/OceanbaseMetadataQueryProvider.java index b1fd3d79..aae7e8e3 100644 --- a/dbswitch-product/dbswitch-product-oceanbase/src/main/java/com/gitee/dbswitch/product/oceanbase/OceanbaseMetadataQueryProvider.java +++ b/dbswitch-product/dbswitch-product-oceanbase/src/main/java/com/gitee/dbswitch/product/oceanbase/OceanbaseMetadataQueryProvider.java @@ -103,9 +103,9 @@ public class OceanbaseMetadataQueryProvider extends AbstractMetadataProvider { @Override public void testQuerySQL(Connection connection, String sql) { if (StringUtils.equals(ProductTypeEnum.OCEANBASE.getSql(), sql)) { - this.delegate.testQuerySQL(connection, this.dialect.getSql()); + this.delegate.testConnection(connection, this.dialect.getSql()); } else { - this.delegate.testQuerySQL(connection, sql); + this.delegate.testConnection(connection, sql); } }