null, schemaName, tableName, null);
null, schemaName, tableName, "%");
    public Column[] getColumns() throws DataSetException    {        if (_columns == null)        {            try            {                // qualified names support                String schemaName = _connection.getSchema();                String tableName = _tableName;                int index = tableName.indexOf(".");                if (index >= 0)                {                    schemaName = tableName.substring(0, index);                    tableName = tableName.substring(index + 1);                }                Connection jdbcConnection = _connection.getConnection();                DatabaseMetaData databaseMetaData = jdbcConnection.getMetaData();                ResultSet resultSet = databaseMetaData.getColumns(                        null, schemaName, tableName, null);                try                {                    DatabaseConfig config = _connection.getConfig();                    IDataTypeFactory dataTypeFactory = (IDataTypeFactory)config.getProperty(                            DatabaseConfig.PROPERTY_DATATYPE_FACTORY);                    boolean datatypeWarning = config.getFeature(                            DatabaseConfig.FEATURE_DATATYPE_WARNING);                    List columnList = new ArrayList();                    while (resultSet.next())                    {                        String columnName = resultSet.getString(4);                        int sqlType = resultSet.getInt(5);                        String sqlTypeName = resultSet.getString(6);//                        int columnSize = resultSet.getInt(7);                        int nullable = resultSet.getInt(11);                        // Convert SQL type to DataType                        DataType dataType =                                dataTypeFactory.createDataType(sqlType, sqlTypeName);                        if (dataType != DataType.UNKNOWN)                        {                            Column column = new Column(columnName, dataType,                                    sqlTypeName, Column.nullableValue(nullable));                            columnList.add(column);                        }                        else if (datatypeWarning)                        {                            System.out.println(                                    "WARNING - " + tableName + "." + columnName +                                    " data type (" + sqlType + ", " + sqlTypeName +                                    ") not recognized and will be ignored. See FAQ for more information.");                        }                    }                    if (columnList.size() == 0)                    {                        throw new NoColumnsFoundException(tableName);                    }                    _columns = (Column[])columnList.toArray(new Column[0]);                }                finally                {                    resultSet.close();                }            }            catch (SQLException e)            {                throw new DataSetException(e);            }        }        return _columns;    }