【问题标题】:how to get list of Databases "Schema" names of MySql using java JDBC如何使用 java JDBC 获取 MySql 的数据库“模式”名称列表
【发布时间】:2011-08-06 11:03:49
【问题描述】:

如何使用 java JDBC 获取 MySql 的数据库“Schema”名称列表?

【问题讨论】:

    标签: java mysql database list jdbc


    【解决方案1】:

    DatabaseMetaData 的 getSchemas() 方法很明显,但对于 MySQL,您必须使用 getCatalogs()

    http://download.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getSchemas() http://download.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getCatalogs()

    例子:

    Class.forName("com.mysql.jdbc.Driver");
    
    // change user and password as you need it
    Connection con = DriverManager.getConnection (connectionURL, "user", "password");
    
    ResultSet rs = con.getMetaData().getCatalogs();
    
    while (rs.next()) {
        System.out.println("TABLE_CAT = " + rs.getString("TABLE_CAT") );
    }
    

    【讨论】:

    • JDBC 允许访问模式和目录,但它的含义是有点 DBMS 特定的,有些提供两者,而另一些只提供一个,并不总是使用您首先怀疑的方法......
    • 如果 MySQL 服务器在 Windows 上运行,此代码以小写形式打印数据库名称。这可能是也可能不是你想要的......
    • 另一方面,如果有人正在寻找从 Spring JdbcTemplate(而不是普通的 JDBC)获取模式名称,它将是 jdbcTemplate.getDataSource().getConnection().getCatalog() for mySql
    【解决方案2】:
    • 要么使用SHOW DATABASES 来查看是否 它在里面,
    • 检查 INFORMATION_SCHEMA,
    • 或者只是做USE DATABASE;然后抓住 错误。

    【讨论】:

      【解决方案3】:
      DatabaseMetaData meta = conn.getMetaData();
      ResultSet schemas = meta.getSchemas();
      while (schemas.next()) {
        String tableSchema = schemas.getString(1);    // "TABLE_SCHEM"
        String tableCatalog = schemas.getString(2); //"TABLE_CATALOG"
        System.out.println("tableSchema "+tableSchema);
      }
      

      【讨论】:

        【解决方案4】:
        DatabaseMetaData dbmd = con.getMetaData();
        ResultSet ctlgs = dbmd.getCatalogs();
        while(ctlgs.next())
        {
        System.out.println("ctlgs  =  "+ctlgs.getString(1));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-05
          • 2021-07-10
          • 1970-01-01
          • 2014-12-13
          • 1970-01-01
          • 2016-03-09
          • 1970-01-01
          相关资源
          最近更新 更多