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

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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));

【讨论】:

以上是关于如何使用 java JDBC 获取 MySql 的数据库“模式”名称列表的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何使用rmi在java中的mysql(jdbc)中插入一条记录? [关闭]

Android/Java JDBC MySQL - 获取行 - 有效算法

Mysql JDBC代码实例

Mysql JDBC代码实例

java中使用JDBC连接数据库的步骤

JDBC编程复习