最近做个工具,利用java.sql.DatabaseMetaData获取数据库信息时,当数据库为mysql时,使用getTables获取表的信息时,获取remarks信息总是得到一个空字符串,上网搜了一下发现这并不是bug,而是获取驱动信息时需要设置了一个Properties的remarks参数,现在把主要内容转载过来,以下是可以正确获取table的remarks的设置驱动的方法:
public Connection getConnection(String username,String password,String host,String port,String database) {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useUnicode=true&characterEncoding=UTF8";
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.setProperty("remarks", "true"); //设置可以获取remarks信息
props.setProperty("useInformationSchema", "true");//设置可以获取tables remarks信息
conn = DriverManager.getConnection(url, props);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
附带oracle中获取驱动方法
public Connection getConnection(String username,String password,String host,String port,String database) {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + database;
Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.setProperty("remarks", "true");
conn = DriverManager.getConnection(url, props);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}