这里默认已经有配置好的环境了(yml配置)
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* 查询表是否存在
* @return
*/
public boolean isTableExist(String dbName, String tableName) {
Connection conn = null;
ResultSet rs = null;
try {
conn = jdbcTemplate.getDataSource().getConnection();
DatabaseMetaData data = conn.getMetaData();
String[] types = {"TABLE"};
rs = data.getTables(dbName, null, tableName, types);
if (rs.next()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
数据库名称的获取
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void jdbcTest() {
Connection conn = null;
try {
conn = jdbcTemplate.getDataSource().getConnection();
System.out.println(conn.getCatalog());
} catch (SQLException e) {
e.printStackTrace();
}
}
也可以通过获取url,然后进行截取获得数据库名称
这里是通过建表sql中提取表名
/**
* 从建表SQL中提取出表名
* @param sql
* @return
*/
public static String getTbNameFromSql(String sql){
//查找规则:第一个TABLE和第一个( 之间的就是表名
int start = sql.toUpperCase().indexOf("TABLE");
int end = sql.indexOf("(");
return sql.substring(start+5,end).trim();
}