mirror of https://gitee.com/stylefeng/roses
【7.0.4】更新数据库操作工具类
parent
d5cf6a78df
commit
73bdf28e97
|
@ -46,6 +46,14 @@
|
||||||
<version>${roses.version}</version>
|
<version>${roses.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!--数据源模块的api-->
|
||||||
|
<!--需要用到租户数据源名称的常量-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.stylefeng.roses</groupId>
|
||||||
|
<artifactId>ds-container-api</artifactId>
|
||||||
|
<version>${roses.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -58,7 +58,12 @@ public enum DatabaseExceptionEnum implements AbstractExceptionEnum {
|
||||||
/**
|
/**
|
||||||
* sql执行错误
|
* sql执行错误
|
||||||
*/
|
*/
|
||||||
SQL_EXEC_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + DbConstants.DB_EXCEPTION_STEP_CODE + "04", "sql执行错误,具体信息:{}");
|
SQL_EXEC_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + DbConstants.DB_EXCEPTION_STEP_CODE + "04", "sql执行错误,具体信息:{}"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有库错误
|
||||||
|
*/
|
||||||
|
DATABASE_LIST_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + DbConstants.DB_EXCEPTION_STEP_CODE + "05", "查询所有库错误,具体信息:{}");
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Copyright [2020-2030] [https://www.stylefeng.cn]
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||||
|
*
|
||||||
|
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||||
|
* 2.请不要删除和修改Guns源码头部的版权声明。
|
||||||
|
* 3.请保留源码和相关描述文件的项目出处,作者声明等。
|
||||||
|
* 4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||||
|
* 5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns
|
||||||
|
* 6.若您的项目无法满足以上几点,可申请商业授权
|
||||||
|
*/
|
||||||
|
package cn.stylefeng.roses.kernel.db.api.sqladapter.database;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.sqladapter.AbstractSql;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建数据库的sql,可用在租户的创建
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2019-07-16-13:06
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public class GetDatabasesSql extends AbstractSql {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String mysql() {
|
||||||
|
return "show databases;";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String sqlServer() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String pgSql() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String oracle() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.stylefeng.roses.kernel.db.api.util;
|
package cn.stylefeng.roses.kernel.db.api.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.stylefeng.roses.kernel.db.api.exception.DaoException;
|
import cn.stylefeng.roses.kernel.db.api.exception.DaoException;
|
||||||
import cn.stylefeng.roses.kernel.db.api.exception.enums.DatabaseExceptionEnum;
|
import cn.stylefeng.roses.kernel.db.api.exception.enums.DatabaseExceptionEnum;
|
||||||
|
@ -7,8 +8,10 @@ import cn.stylefeng.roses.kernel.db.api.pojo.db.TableFieldInfo;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.db.TableInfo;
|
import cn.stylefeng.roses.kernel.db.api.pojo.db.TableInfo;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
|
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
|
||||||
import cn.stylefeng.roses.kernel.db.api.sqladapter.database.CreateDatabaseSql;
|
import cn.stylefeng.roses.kernel.db.api.sqladapter.database.CreateDatabaseSql;
|
||||||
|
import cn.stylefeng.roses.kernel.db.api.sqladapter.database.GetDatabasesSql;
|
||||||
import cn.stylefeng.roses.kernel.db.api.sqladapter.table.TableFieldListSql;
|
import cn.stylefeng.roses.kernel.db.api.sqladapter.table.TableFieldListSql;
|
||||||
import cn.stylefeng.roses.kernel.db.api.sqladapter.table.TableListSql;
|
import cn.stylefeng.roses.kernel.db.api.sqladapter.table.TableListSql;
|
||||||
|
import cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
@ -27,6 +30,39 @@ import java.util.List;
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class DatabaseUtil {
|
public class DatabaseUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库中的所有数据库列表
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2021/5/26 20:42
|
||||||
|
*/
|
||||||
|
public static List<String> getDatabases(DruidProperties druidProperties) {
|
||||||
|
Connection conn = null;
|
||||||
|
List<String> databasesList = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
|
conn = DriverManager.getConnection(
|
||||||
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
PreparedStatement preparedStatement = conn.prepareStatement(new GetDatabasesSql().getSql(druidProperties.getUrl()));
|
||||||
|
ResultSet resultSet = preparedStatement.executeQuery();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
String database = resultSet.getString("database");
|
||||||
|
if (StrUtil.isNotBlank(database)) {
|
||||||
|
if (StrUtil.startWith(database, DatasourceContainerConstants.TENANT_DB_PREFIX)) {
|
||||||
|
database = database.replaceAll(DatasourceContainerConstants.TENANT_DB_PREFIX, "");
|
||||||
|
databasesList.add(database);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return databasesList;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询所有库错误!", e);
|
||||||
|
throw new DaoException(DatabaseExceptionEnum.DATABASE_LIST_ERROR, e.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询某个数据库连接的所有表
|
* 查询某个数据库连接的所有表
|
||||||
*
|
*
|
||||||
|
@ -35,9 +71,10 @@ public class DatabaseUtil {
|
||||||
*/
|
*/
|
||||||
public static List<TableInfo> selectTables(DruidProperties druidProperties) {
|
public static List<TableInfo> selectTables(DruidProperties druidProperties) {
|
||||||
List<TableInfo> tables = new ArrayList<>();
|
List<TableInfo> tables = new ArrayList<>();
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(
|
conn = DriverManager.getConnection(
|
||||||
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
// 获取数据库名称
|
// 获取数据库名称
|
||||||
|
@ -65,6 +102,8 @@ public class DatabaseUtil {
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("查询所有表错误!", ex);
|
log.error("查询所有表错误!", ex);
|
||||||
throw new DaoException(DatabaseExceptionEnum.TABLE_LIST_ERROR, ex.getMessage());
|
throw new DaoException(DatabaseExceptionEnum.TABLE_LIST_ERROR, ex.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,9 +115,10 @@ public class DatabaseUtil {
|
||||||
*/
|
*/
|
||||||
public static List<TableFieldInfo> getTableFields(DruidProperties druidProperties, String tableName) {
|
public static List<TableFieldInfo> getTableFields(DruidProperties druidProperties, String tableName) {
|
||||||
ArrayList<TableFieldInfo> fieldList = new ArrayList<>();
|
ArrayList<TableFieldInfo> fieldList = new ArrayList<>();
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(
|
conn = DriverManager.getConnection(
|
||||||
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(new TableFieldListSql().getSql(druidProperties.getUrl()));
|
PreparedStatement preparedStatement = conn.prepareStatement(new TableFieldListSql().getSql(druidProperties.getUrl()));
|
||||||
|
@ -111,6 +151,8 @@ public class DatabaseUtil {
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("查询表的所有字段错误!", ex);
|
log.error("查询表的所有字段错误!", ex);
|
||||||
throw new DaoException(DatabaseExceptionEnum.FIELD_GET_ERROR, ex.getMessage());
|
throw new DaoException(DatabaseExceptionEnum.FIELD_GET_ERROR, ex.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,9 +163,10 @@ public class DatabaseUtil {
|
||||||
* @date 2021/5/19 10:39
|
* @date 2021/5/19 10:39
|
||||||
*/
|
*/
|
||||||
public static void createDatabase(DruidProperties druidProperties, String databaseName) {
|
public static void createDatabase(DruidProperties druidProperties, String databaseName) {
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
conn = DriverManager.getConnection(druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
//创建sql
|
//创建sql
|
||||||
String sql = new CreateDatabaseSql().getSql(druidProperties.getUrl());
|
String sql = new CreateDatabaseSql().getSql(druidProperties.getUrl());
|
||||||
|
@ -137,6 +180,8 @@ public class DatabaseUtil {
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("执行sql出现问题!", ex);
|
log.error("执行sql出现问题!", ex);
|
||||||
throw new DaoException(DatabaseExceptionEnum.CREATE_DATABASE_ERROR, ex.getMessage());
|
throw new DaoException(DatabaseExceptionEnum.CREATE_DATABASE_ERROR, ex.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.stylefeng.roses.kernel.db.api.util;
|
package cn.stylefeng.roses.kernel.db.api.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.stylefeng.roses.kernel.db.api.exception.DaoException;
|
import cn.stylefeng.roses.kernel.db.api.exception.DaoException;
|
||||||
import cn.stylefeng.roses.kernel.db.api.exception.enums.DatabaseExceptionEnum;
|
import cn.stylefeng.roses.kernel.db.api.exception.enums.DatabaseExceptionEnum;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -29,9 +30,10 @@ public class SqlRunUtil {
|
||||||
* @date 2021/5/19 10:52
|
* @date 2021/5/19 10:52
|
||||||
*/
|
*/
|
||||||
public static void runClassPathSql(String classpathFileName, String driverClassName, String url, String username, String password) {
|
public static void runClassPathSql(String classpathFileName, String driverClassName, String url, String username, String password) {
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(driverClassName);
|
Class.forName(driverClassName);
|
||||||
Connection conn = DriverManager.getConnection(url, username, password);
|
conn = DriverManager.getConnection(url, username, password);
|
||||||
|
|
||||||
ClassPathResource classPathResource = new ClassPathResource(classpathFileName);
|
ClassPathResource classPathResource = new ClassPathResource(classpathFileName);
|
||||||
EncodedResource encodedResource = new EncodedResource(classPathResource, "utf-8");
|
EncodedResource encodedResource = new EncodedResource(classPathResource, "utf-8");
|
||||||
|
@ -39,8 +41,9 @@ public class SqlRunUtil {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("执行sql错误!", e);
|
log.error("执行sql错误!", e);
|
||||||
throw new DaoException(DatabaseExceptionEnum.SQL_EXEC_ERROR, e.getMessage());
|
throw new DaoException(DatabaseExceptionEnum.SQL_EXEC_ERROR, e.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,9 +53,10 @@ public class SqlRunUtil {
|
||||||
* @date 2021/5/19 10:52
|
* @date 2021/5/19 10:52
|
||||||
*/
|
*/
|
||||||
public static void runFileSystemSql(SqlSessionFactory sqlSessionFactory, String sqlPath) {
|
public static void runFileSystemSql(SqlSessionFactory sqlSessionFactory, String sqlPath) {
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
SqlSession sqlSession = sqlSessionFactory.openSession();
|
SqlSession sqlSession = sqlSessionFactory.openSession();
|
||||||
Connection conn = sqlSession.getConnection();
|
conn = sqlSession.getConnection();
|
||||||
|
|
||||||
FileSystemResource classPathResource = new FileSystemResource(sqlPath);
|
FileSystemResource classPathResource = new FileSystemResource(sqlPath);
|
||||||
EncodedResource encodedResource = new EncodedResource(classPathResource, "GBK");
|
EncodedResource encodedResource = new EncodedResource(classPathResource, "GBK");
|
||||||
|
@ -60,6 +64,8 @@ public class SqlRunUtil {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("执行sql错误!", e);
|
log.error("执行sql错误!", e);
|
||||||
throw new DaoException(DatabaseExceptionEnum.SQL_EXEC_ERROR, e.getMessage());
|
throw new DaoException(DatabaseExceptionEnum.SQL_EXEC_ERROR, e.getMessage());
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
<version>${roses.version}</version>
|
<version>${roses.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
package cn.stylefeng.roses.kernel.dsctn.persist;
|
package cn.stylefeng.roses.kernel.dsctn.persist;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
|
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
|
||||||
import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException;
|
import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException;
|
||||||
|
@ -66,9 +67,10 @@ public class DataBaseInfoPersistence {
|
||||||
*/
|
*/
|
||||||
public Map<String, DruidProperties> getAllDataBaseInfo() {
|
public Map<String, DruidProperties> getAllDataBaseInfo() {
|
||||||
Map<String, DruidProperties> dataSourceList = new HashMap<>(16);
|
Map<String, DruidProperties> dataSourceList = new HashMap<>(16);
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(
|
conn = DriverManager.getConnection(
|
||||||
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(new DatabaseListSql().getSql(druidProperties.getUrl()));
|
PreparedStatement preparedStatement = conn.prepareStatement(new DatabaseListSql().getSql(druidProperties.getUrl()));
|
||||||
|
@ -86,6 +88,8 @@ public class DataBaseInfoPersistence {
|
||||||
log.error("查询数据源信息错误!", exception);
|
log.error("查询数据源信息错误!", exception);
|
||||||
String userTip = StrUtil.format(QUERY_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
String userTip = StrUtil.format(QUERY_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
||||||
throw new DatasourceContainerException(QUERY_DBS_DAO_ERROR, userTip);
|
throw new DatasourceContainerException(QUERY_DBS_DAO_ERROR, userTip);
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,9 +100,10 @@ public class DataBaseInfoPersistence {
|
||||||
* @date 2020/10/31 23:55
|
* @date 2020/10/31 23:55
|
||||||
*/
|
*/
|
||||||
public void createMasterDatabaseInfo() {
|
public void createMasterDatabaseInfo() {
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(
|
conn = DriverManager.getConnection(
|
||||||
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(new AddDatabaseInfoSql().getSql(druidProperties.getUrl()));
|
PreparedStatement preparedStatement = conn.prepareStatement(new AddDatabaseInfoSql().getSql(druidProperties.getUrl()));
|
||||||
|
@ -119,6 +124,8 @@ public class DataBaseInfoPersistence {
|
||||||
log.error("初始化master的databaseInfo信息错误!", exception);
|
log.error("初始化master的databaseInfo信息错误!", exception);
|
||||||
String userTip = StrUtil.format(INSERT_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
String userTip = StrUtil.format(INSERT_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
||||||
throw new DatasourceContainerException(INSERT_DBS_DAO_ERROR, userTip);
|
throw new DatasourceContainerException(INSERT_DBS_DAO_ERROR, userTip);
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,9 +136,10 @@ public class DataBaseInfoPersistence {
|
||||||
* @date 2020/10/31 23:55
|
* @date 2020/10/31 23:55
|
||||||
*/
|
*/
|
||||||
public void deleteMasterDatabaseInfo() {
|
public void deleteMasterDatabaseInfo() {
|
||||||
|
Connection conn = null;
|
||||||
try {
|
try {
|
||||||
Class.forName(druidProperties.getDriverClassName());
|
Class.forName(druidProperties.getDriverClassName());
|
||||||
Connection conn = DriverManager.getConnection(
|
conn = DriverManager.getConnection(
|
||||||
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
druidProperties.getUrl(), druidProperties.getUsername(), druidProperties.getPassword());
|
||||||
|
|
||||||
PreparedStatement preparedStatement = conn.prepareStatement(new DeleteDatabaseInfoSql().getSql(druidProperties.getUrl()));
|
PreparedStatement preparedStatement = conn.prepareStatement(new DeleteDatabaseInfoSql().getSql(druidProperties.getUrl()));
|
||||||
|
@ -142,6 +150,8 @@ public class DataBaseInfoPersistence {
|
||||||
log.info("删除master的databaseInfo信息失败!", exception);
|
log.info("删除master的databaseInfo信息失败!", exception);
|
||||||
String userTip = StrUtil.format(DELETE_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
String userTip = StrUtil.format(DELETE_DBS_DAO_ERROR.getUserTip(), exception.getMessage());
|
||||||
throw new DatasourceContainerException(DELETE_DBS_DAO_ERROR, userTip);
|
throw new DatasourceContainerException(DELETE_DBS_DAO_ERROR, userTip);
|
||||||
|
} finally {
|
||||||
|
IoUtil.close(conn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue