原生Jdbc如何获取到数据库列表

原生Jdbc如何获取到数据库列表,想要用原生的,不执行SQL的那种。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1063356
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:JDBC查询数据库时出现 sql语句正确,但是查询英文可以,汉字不行的情况解决办法
  • 您还可以看一下 孔德孟老师的Java数据库编程JDBC入门实战案例课程中的 采用自带客户端创建表并进行SQL编程小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    使用原生jdbc查询数据库列表可以通过以下步骤实现:

    1. 加载数据库驱动程序
    Class.forName("com.mysql.cj.jdbc.Driver");
    
    1. 创建数据库连接
    Connection conn = DriverManager.getConnection(url, username, password);
    

    注意,这里的url、username和password需要替换为相应数据库的连接信息。

    1. 创建DatabaseMetaData对象
    DatabaseMetaData metaData = conn.getMetaData();
    
    1. 使用DatabaseMetaData对象获取数据库信息
    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