una programacion obtener nombre mostrar datos columna java database jdbc database-metadata

programacion - mostrar datos de una base de datos en java



¿Cómo obtener todos los nombres de tabla de una base de datos? (5)

En su problema de ejemplo, se pasa el patrón de nombre de tabla en la función getTables de DatabaseMetaData.

Algunas bases de datos admiten el identificador de mayúsculas, algunas admiten identificadores de minúsculas. Por ejemplo, oráculo obtiene el nombre de la tabla en mayúsculas, mientras que postgreSQL lo busca en minúsculas.

DatabaseMetaDeta proporciona un método para determinar cómo la base de datos almacena identificadores, puede ser mayúsculas, mayúsculas y minúsculas. Consulte: http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#storesMixedCaseIdentifiers()

A partir del ejemplo siguiente, puede obtener todas las tablas y vistas para proporcionar el patrón del nombre de la tabla, si solo desea tablas, entonces elimine "VIEW" de la matriz TYPES.

public class DBUtility { private static final String[] TYPES = {"TABLE", "VIEW"}; public static void getTableMetadata(Connection jdbcConnection, String tableNamePattern, String schema, String catalog, boolean isQuoted) throws HibernateException { try { DatabaseMetaData meta = jdbcConnection.getMetaData(); ResultSet rs = null; try { if ( (isQuoted && meta.storesMixedCaseQuotedIdentifiers())) { rs = meta.getTables(catalog, schema, tableNamePattern, TYPES); } else if ( (isQuoted && meta.storesUpperCaseQuotedIdentifiers()) || (!isQuoted && meta.storesUpperCaseIdentifiers() )) { rs = meta.getTables( StringHelper.toUpperCase(catalog), StringHelper.toUpperCase(schema), StringHelper.toUpperCase(tableNamePattern), TYPES ); } else if ( (isQuoted && meta.storesLowerCaseQuotedIdentifiers()) || (!isQuoted && meta.storesLowerCaseIdentifiers() )) { rs = meta.getTables( StringHelper.toLowerCase( catalog ), StringHelper.toLowerCase(schema), StringHelper.toLowerCase(tableNamePattern), TYPES ); } else { rs = meta.getTables(catalog, schema, tableNamePattern, TYPES); } while ( rs.next() ) { String tableName = rs.getString("TABLE_NAME"); System.out.println("table = " + tableName); } } finally { if (rs!=null) rs.close(); } } catch (SQLException sqlException) { // TODO sqlException.printStackTrace(); } } public static void main(String[] args) { Connection jdbcConnection; try { jdbcConnection = DriverManager.getConnection("", "", ""); getTableMetadata(jdbcConnection, "tbl%", null, null, false); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

Me gustaría recuperar todos los nombres de tabla de un esquema de base de datos y, si es posible, obtener toda la tabla comenzando con un prefijo especificado.

Intenté usar connection.getMetaData().getTables() JDBC, pero no funcionó en absoluto.

Connection jdbcConnection = DriverManager.getConnection("", "", ""); DatabaseMetaData m = jdbcConnection.getMetaData(); ResultSet tables = m.getTables(jdbcConnection.getCatalog(), null, "TAB_%", null); for (int i = 0; i < tables.getMetaData().getColumnCount(); i++) { System.out.println("table = " + tables.getMetaData().getTableName(i)); }

Puede alguien ayudarme con esto?


Necesitas iterar sobre tu ResultSet llamando a next() .

Este es un ejemplo de java2s.com :

DatabaseMetaData md = conn.getMetaData(); ResultSet rs = md.getTables(null, null, "%", null); while (rs.next()) { System.out.println(rs.getString(3)); }

La columna 3 es TABLE_NAME (ver documentación de DatabaseMetaData::getTables ).


Si desea utilizar una API de alto nivel, que oculta gran parte de la complejidad de JDBC en torno a los metadatos del esquema de la base de datos, consulte este artículo: http://www.devx.com/Java/Article/32443/1954


public void getDatabaseMetaData() { try { DatabaseMetaData dbmd = conn.getMetaData(); String[] types = {"TABLE"}; ResultSet rs = dbmd.getTables(null, null, "%", types); while (rs.next()) { System.out.println(rs.getString("TABLE_NAME")); } } catch (SQLException e) { e.printStackTrace(); } }


public static ArrayList<String> getTablesList(Connection conn) throws SQLException { ArrayList<String> listofTable = new ArrayList<String>(); DatabaseMetaData md = conn.getMetaData(); ResultSet rs = md.getTables(null, null, "%", null); while (rs.next()) { if (rs.getString(4).equalsIgnoreCase("TABLE")) { listofTable.add(rs.getString(3)); } } return listofTable; }