Как вернуть количество столбцов, имена столбцов и типы столбцов из указанной таблицы в Java?

#java #mysql #sql #jdbc

#java #mysql #sql #jdbc

Вопрос:

У меня есть задание для домашней работы, чтобы распечатать количество столбцов, их имена и типы для данной таблицы, которая вводится. Вот код:

 public void printTableInfo(String tableName) throws DLException{
        String catalog = null;
        String schemaPattern = null;
        String tableNamePattern = tableName;
        String columnNamePattern = null;
        int columnCount = 0;
        String columnName = null;
        int columnType = 0;
        String columnPrimaryKeys = null;
        try {
            DatabaseMetaData dbmd = connection.getMetaData();

            ResultSet result = dbmd.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern);
            ResultSetMetaData rsmd = result.getMetaData();
            columnCount = rsmd.getColumnCount();
            ResultSet primaryKeys = dbmd.getPrimaryKeys(catalog, schemaPattern, tableNamePattern);

            while(result.next()) {
                columnName = result.getString(4);
                columnType = result.getInt(5);
            }
            while(primaryKeys.next()) {
                columnPrimaryKeys = primaryKeys.getString(4);
            }
            System.out.println("nColumn count: "   columnCount   ", Column names: "   columnName   ", Column Types: "   columnType   "nPrimary Keys: "   columnPrimaryKeys);
        } catch (SQLException sqle) {
            throw new DLException(sqle, "-> Error in processing data printing (SQLException) to the database at printTableInfo() method.");
        }
    }
 

Однако, когда я запускаю этот код, он выдает мне более чем очевидное количество столбцов для таблицы, чем у него есть, только имя последнего столбца и неправильное количество типов столбцов. Как я могу сделать так, чтобы он выдавал правильное количество столбцов, отображал все имена столбцов и правильное количество типов столбцов? P.S часть первичного ключа работает нормально.

Ответ №1:

Я понял это, я печатал не в том месте. Подайте на меня в суд.