如何使用 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)中插入一条记录? [关闭]