public class JdbcConnectUtils{
private static Logger log = LoggerFactory.getLogger(JdbcConnectUtils.class);
public static List<Map<String,Object>> connect(String driverClassName,String url,
String username,String password,
String sql){
List<Map<String,Object>> tableDescList = new ArrayList<>();
Connection connection = getConnection(driverClassName,url,username,password);
try{
//创建数据库操作对象
Statement statement = connection.createStatement();
//执行sql,返回结果
ResultSet resultSet = statement.executeQuery(sql);
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
while(resultSet.next()){
Map<String,Object> objectMap = new HashMap<>();
for(int i = 1;i<= columnCount;i++){
objectMap.put(resultSetMetaData.getColumnName(i),
resultSet.getObjet(i));
}
tableDescList.add(object);
}
resultSet.close;
statement.close;
connection.close;
}catch(Exception e){
log.error('查询失败',e);
throw new RunTimeException("查询失败" + e +
"当前驱动信息:" + driverClassName +
"当前连接url:" + url +
"当前账号:" + username +
"当前密码:" + password +
"当前SQL:" + sql);
}
}
public static Connection getConnection(String driverClassName,String url,
String username,String password){
Connection connection = null;
try{
//加载驱动
Class.forName(driverClassName);
//连接数据库
connection = DriverManager.getConnection(url,username,password);
}catch(Exception e){
log.error('创建连接失败',e);
throw new RunTimeException("创建连接失败" + e +
"当前驱动信息:" + driverClassName +
"当前连接url:" + url +
"当前账号:" + username +
"当前密码:" + password );
}
return connection;
}
}
MySQL:
驱动信息(driverClassName): com.mysql.cj.jdbc.Driver
连接url(url): jdbc:mysql://127.0.0.1:3306/zngz
查询的SQL(sql): show full COLUMNS from bs_label_info;
Oracle:
驱动信息(driverClassName): oracle.jdbc.OracleDriver
连接url(url): jdbc:oracle:thin:@127.0.0.1:1521:zngz
查询的SQL(sql): select * from all_col_comments where owner = ‘ADM’ and tabel_name = 'BSG_CUST_ASSET_DEAL_RECORD';
ClickHouse:
驱动信息(driverClassName): ru.yandex.clickhouse.ClickHouseDriver
连接url(url): jdbc:clickhouse://127.0.0.1:8123/zngz
查询的SQL(sql): desc zngz.adm_aware_index_and_label