原生Jdbc如何获取到数据库列表,想要用原生的,不执行SQL的那种。
使用原生jdbc查询数据库列表可以通过以下步骤实现:
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, username, password);
注意,这里的url、username和password需要替换为相应数据库的连接信息。
DatabaseMetaData metaData = conn.getMetaData();
ResultSet rs = metaData.getCatalogs();
while (rs.next()) {
String databaseName = rs.getString("TABLE_CAT");
System.out.println(databaseName);
}
其中,getCatalogs()方法返回一个ResultSet对象,其中包含所有可用的数据库列表。可以使用getString("TABLE_CAT")方法获取数据库名称。其他元数据信息也可以通过DatabaseMetaData对象获取,例如获取所有表信息可以使用以下代码:
ResultSet tableRs = metaData.getTables(null, null, "%", new String[] { "TABLE" });
while (tableRs.next()) {
String tableName = tableRs.getString("TABLE_NAME");
System.out.println(tableName);
}
注意,这里的参数设置了获取所有TABLE类型的表信息。
完整代码示例:
public static void main(String[] args) throws Exception {
// 加载数据库驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
Connection conn = DriverManager.getConnection(url, username, password);
// 创建DatabaseMetaData对象
DatabaseMetaData metaData = conn.getMetaData();
// 获取所有可用的数据库列表
ResultSet rs = metaData.getCatalogs();
while (rs.next()) {
String databaseName = rs.getString("TABLE_CAT");
System.out.println(databaseName);
}
// 获取所有表信息
ResultSet tableRs = metaData.getTables(null, null, "%", new String[] { "TABLE" });
while (tableRs.next()) {
String tableName = tableRs.getString("TABLE_NAME");
System.out.println(tableName);
}
// 关闭连接和ResultSet对象
rs.close();
tableRs.close();
conn.close();
}
执行show databases ;
dd