package db.util.jdbc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.commons.dbcp.BasicDataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowCallbackHandler; public class MysqlTools { /** * 获取所有数据库表(BASE TABLE) * @param ip 数据库IP地址 * @param port 数据库端口 * @param databaseName 数据库名 * @param username 用户名 * @param password 密码 * @return 数据库中的所有表 */ public static List findAllDBTables(String ip, String port, String databaseName, String username, String password) { final List tables = new ArrayList(); String sql = "select TABLE_NAME from TABLES where TABLE_SCHEMA = '" + databaseName + "' and TABLE_TYPE ='BASE TABLE'"; JdbcTemplate jt = new JdbcTemplate(createDataSource(ip, port, "information_schema", username, password)); jt.query(sql, new RowCallbackHandler() { public void processRow(ResultSet rs) throws SQLException { if (rs != null) { tables.add(rs.getString(1)); } } }); return tables; } /** * 建立数据库连接 * jdbc:mysql://${db.host}:3306 * @param ip 数据库IP地址 * @param port 数据库端口 * @param databaseName 数据库名 * @param username 用户名 * @param password 密码 * @return 数据库连接 */ public static BasicDataSource createDataSource(String ip, String port, String databaseName, String username, String password) { BasicDataSource ds = new BasicDataSource(); // ds.setDriverClassName(MySQLConfig.DRIVERCLASSNAME); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUrl("jdbc:mysql://" + ip + ":" + port + "/" + databaseName + "?characterEncoding=utf8"); ds.setUsername(username); ds.setPassword(password); ds.setTestOnBorrow(true); ds.setValidationQuery("select 1 "); return ds; } }