Remover colunas das tabelas

4 respostas
M

bom dia pessoal

estou com um probleminha e espero qie alguem possa me ajudar:

Em uma tabela quero mostrar informaçoes sobre as colunas de uma tabela do banco. Isso eu consigo fazer, o problema e que traz muitas colunas e eu gostaria de mostrar somente algumas. A pergunta é, como eu faço pra mostrar só as colunas que me interessa?

//metodo que retorna uma lista de valores com HashMap
public List getDadosFromResultSet(ResultSet rs) throws SQLException {
		ArrayList<Object> al = new ArrayList<Object>();

		while (rs.next()) {
			Map<String, Object> hm = new LinkedHashMap<String, Object>();
			ResultSetMetaData rsmd = rs.getMetaData();
			for (int i = 1; i <= rsmd.getColumnCount(); i++) {
				hm.put(rsmd.getColumnName(i), rs.getObject(rsmd.getColumnName(i)));
			}
			al.add(hm);
		}
		return al;
	}


//metodo que retorna uma lista com os dados das colunas do banco
public List getColumns(ResultSet rs,DatabaseMetaData dmd, Object schem, Object tabela) {
		List list = null;
		try {
			rs = dmd.getColumns(null, schem.toString(), tabela.toString(), null);			
			list = this.getDadosFromResultSet(rs);
			if (list.isEmpty()){
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}


//metodo que preenche os campos da tabela
public void preencheTabelas() {
		ResultSet rs = null;		
		DatabaseMetaData dmd = null;
		List list = null;
		try {
			dmd = conn.getMetaData();
			
			Object schem = screen.getJcmbxOwner().getSelectedItem();
			Object tabela = screen.getJcmbxTabela().getSelectedItem();
			
			list = getColumns(rs, dmd, schem, tabela);
			screen.getJtblColuna().setModel(new DataTableModel(list));		

...

O resto do metodo sao outras tabelas.

4 Respostas

A

olá marcosbrandao.

Na tua query à base de dados, em vez de seleccionares todas as colunas, seleccionas apenas as que pretendes.
ou seja, em vez disto: select * from tabela;
fica: select coluna1, coluna2 from tabela;

Espero que seja isto :wink:

M

Desculpe, mas talvez eu não tenha sido bem claro.

Eu não quero buscar os dados que existem na tabela, mas sim as informações sobre esta tabelas.

Ex:
Nome Coluna…Tamanho Coluna…Tipo
id…3… Number
nome…35… varchar2
idade…2… Number

Acho que agora deu pra entender um pouco melhor.

Mas de qualquer forma obrigado…

B

“marcosbrandao”:
Desculpe, mas talvez eu não tenha sido bem claro.

Eu não quero buscar os dados que existem na tabela, mas sim as informações sobre esta tabelas.

Ex:
Nome Coluna…Tamanho Coluna…Tipo
id…3… Number
nome…35… varchar2
idade…2… Number

Acho que agora deu pra entender um pouco melhor.

Mas de qualquer forma obrigado…

Para este tipo de dados ae vc uso o java.sql.DatabaseMetaData, que vc recupera apartir de uma java.sql.Connection, que é uma conexão normal com a sua base…

Dá uma olhada na api, para ver os metodos que a interface te oferece.

B

Ola

Como é o mundo né… estou fazendo algo bem parecido aqui no trampo agora :grin:

Mas pra te ajudar, quando vc executa uma busca por colunas, o resultSet desta busca traz umas colunas pré definidas, de acordo com a API do método tem umas constantes de nomes de colunas, só vc ver qual vc quer e recuperar atraves do ResultSet.getString(columnName:String);

link para a api

Criado 12 de setembro de 2006
Ultima resposta 20 de set. de 2006
Respostas 4
Participantes 3