java.sql.DatabaseMetaData
rozhraní poskytuje metody pro získání metadat vašeho připojeného databázového serveru. Níže uvedené příklady vám ukážou, jak to udělat jeden po druhém.
Instance java.sql.DatabaseMetaData
Objekt DatabaseMetaData je načten z objektu Database Connection.
DatabaseMetaData dbmd = dbConn.getMetaData();
Název a verze DB
String dbProductName = dbmd.getDatabaseProductName();
String dbProductVersion = dbmd.getDatabaseProductVersion();
int dbMajorVersion = dbmd.getDatabaseMajorVersion();
int dbMinorVersion = dbmd.getDatabaseMinorVersion();
Verze ovladače JDBC
int jdbcDriverMajorVersion = dbmd.getDriverMajorVersion();
int jdbcDriverMinorVersion = dbmd.getDriverMinorVersion();
Seznam databází
ResultSet rs = dbmd.getCatalogs(); if(rs!=null) { while(rs.next()) { String catalogName = rs.getString(1); System.out.println("Database catalog : " + catalogName); } }
Seznam tabulek
// Get all tables of this database. ResultSet tblRs = dbmd.getTables(catalogName, "", "", null); if(tblRs!=null) { while(tblRs.next()) { // Get table String tmpDBName = tblRs.getString(1); String tmpTblName = tblRs.getString(3); System.out.println("DB : " + tmpDBName + " , table : " + tmpTblName); } }
Seznam sloupců tabulky
// Get columns ResultSet columnRs = dbmd.getColumns(catalogName, "", tmpTblName, ""); if(columnRs!=null) { while(columnRs.next()) { // Get column type and name. String cType = columnRs.getString(6); String cName = columnRs.getString(4); System.out.println("Column Name : " + cName + " , Column Type : " + cType); } }
Úplný příklad kódu
Níže uvedený příklad bude používat databázový server MySQL.
public class DatabaseMetaDataExample { public static void main(String[] args) { try { /* Below are db connection required data. */ String ip = "localhost"; int port = 3306; String dbName = "test"; String userName = "root"; String password = ""; DatabaseMetaDataExample dbmdExample = new DatabaseMetaDataExample(); // Get database connection. Connection dbConn = dbmdExample.getMySqlConnection(ip, port, dbName, userName, password); // Get database metadata. DatabaseMetaData dbmd = dbConn.getMetaData(); // Get db name. String dbProductName = dbmd.getDatabaseProductName(); System.out.println("DB product name : " + dbProductName); // Get db product version. String dbProductVersion = dbmd.getDatabaseProductVersion(); System.out.println("DB product version : " + dbProductVersion); // Get db major & minor version. int dbMajorVersion = dbmd.getDatabaseMajorVersion(); System.out.println("DB major version : " + dbMajorVersion); int dbMinorVersion = dbmd.getDatabaseMinorVersion(); System.out.println("DB minor version : " + dbMinorVersion); // Get jdbc driver major & minor version. int jdbcDriverMajorVersion = dbmd.getDriverMajorVersion(); System.out.println("JDBC driver major version : " + jdbcDriverMajorVersion); int jdbcDriverMinorVersion = dbmd.getDriverMinorVersion(); System.out.println("JDBC driver minor version : " + jdbcDriverMinorVersion); // Get all database catalogs. ResultSet rs = dbmd.getCatalogs(); if(rs!=null) { while(rs.next()) { String catalogName = rs.getString(1); System.out.println("Database catalog : " + catalogName); // Get all tables of this database. ResultSet tblRs = dbmd.getTables(catalogName, "", "", null); if(tblRs!=null) { while(tblRs.next()) { // Get table String tmpDBName = tblRs.getString(1); String tmpTblName = tblRs.getString(3); System.out.println("DB : " + tmpDBName + " , table : " + tmpTblName); // Get columns ResultSet columnRs = dbmd.getColumns(catalogName, "", tmpTblName, ""); if(columnRs!=null) { while(columnRs.next()) { // Get column type and name. String cType = columnRs.getString(6); String cName = columnRs.getString(4); System.out.println("Column Name : " + cName + " , Column Type : " + cType); } } } } } } dbmdExample.closeDBResource(null, dbConn); } catch (SQLException ex) { ex.printStackTrace(); } } /* This method return java.sql.Connection object from MySQL server. */ public Connection getMySqlConnection(String ip, int port, String dbName, String userName, String password) { /* Declare and initialize a sql Connection variable. */ Connection ret = null; try { /* Register for mysql jdbc driver class. */ Class.forName("com.mysql.jdbc.Driver"); /* Create mysql connection url. */ String mysqlConnUrl = "jdbc:mysql://" + ip + ":" + port + "/" + dbName; /* Get the mysql Connection object. */ ret = DriverManager.getConnection(mysqlConnUrl, userName , password); }catch(Exception ex) { ex.printStackTrace(); }finally { return ret; } } /* Close statement and connection after use, this can avoid resource waste. */ public void closeDBResource(Statement stmt, Connection conn) { try { if(stmt!=null) { stmt.close(); stmt = null; } if(conn!=null) { conn.close(); conn = null; } }catch(Exception ex) { ex.printStackTrace(); } } }
Zdrojový kód:
- [ID stažení=”2567″]
Reference:
- Rozhraní DatabaseMetaData