conjunto de resultados metadata.getTables vacío en caso de mssql

Estoy tratando de elegir todos los nombres de las tablas de una base de datos. Estoy usando las siguientes líneas de código para eso.

DatabaseMetaData databaseMetaData =  connection.getMetaData();
            resultSet = databaseMetaData.getTables(null, dbName, null, null);
            while(resultSet.next()){
                        //doing operations - take table name and all that
                        }

El problema aquí es que en el caso de mysql funciona bien, significa que si la base de datos subyacente es mysql, no hay problema. Pero cuando el mismo código probé con mssql, obtengo el conjunto de resultados vacío. ¿Existe alguna otra alternativa para obtener los detalles de la tabla de la base de datos mssql?

Si es ... proporcione la distinción para obtener detalles de la tabla en la base de datos diff como mysql, mssql, oracle; porque como en mi caso, mi base de datos puede ser cualquiera de las anteriores. ¿Alguien puede ayudar en esto?

preguntado el 04 de julio de 12 a las 06:07

¿Obtiene alguna NullPointerException cuando usa MSSQL? -

no, no obtengo ninguna excepción. Pero el conjunto de resultados está vacío como en el caso de mssql:

mysql y mssql toman diferentes conectores... com.microsoft.sqlserver.jdbc.SQLServerDriver para mssql com.mysql.jdbc.Driver para mysql -

3 Respuestas

El código para obtener, por EJEMPLO:

Connection con = null;
    try {

      Class.forName(
        "com.microsoft.sqlserver.jdbc.SQLServerDriver");
      con = DriverManager.getConnection(
          "jdbc:sqlserver://localhost:1269;"
        + "user=sa;password=HerongYang;"
        + "database=AdventureWorksLT");

      DatabaseMetaData meta = con.getMetaData();
      ResultSet res = meta.getTables(null, null, null, 
         new String[] {"TABLE"});
      System.out.println("List of tables: "); 
      while (res.next()) {
         System.out.println(
            "   "+res.getString("TABLE_CAT") 
           + ", "+res.getString("TABLE_SCHEM")
           + ", "+res.getString("TABLE_NAME")
           + ", "+res.getString("TABLE_TYPE")
           + ", "+res.getString("REMARKS")); 
      }
      res.close();

      con.close();

Puedes probar este enlace en esta página:

Listado de todas las tablas - getTables()

Respondido 04 Jul 12, 06:07

Creo que el siguiente enlace te ayudará.

http://www.roseindia.net/jdbc/jdbc-mysql/AllTableName.shtml

Respondido 04 Jul 12, 06:07

OP está buscando una solución que no sea MySQL. - ravinder reddy

La instalación de MySQL viene con bases de datos predeterminadas. Una de las bases de datos se llama 'mysql'. Si usa la base de datos 'mysql' e intenta obtener metadatos y los nombres de la tabla, da un resultado vacío. Verifiqué esto creando otra base de datos llamada 'mydb' y luego la usé para obtener los metadatos y luego los nombres de las tablas. Funcionó al revés.

Parece que MYSQL tiene algún problema o restricciones al usar la base de datos predeterminada llamada 'mysql'

Respondido 13 Abr '18, 14:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.