Detectando automatico o banco

4 respostas
G

bom…gostaria de saber se tem alguma forma de detectar a tabela e colunas de um banco d dados de alguma forma sem ter que passa o dado…tipow faço a conecção e pronto
e tb gostaria de saber a qntidade de tabela e colunas de um banco…

Conexao con = new Conexao();

con.conecta();
.
.
.
...
con.resultset.getString("nome");
con.resultset.getString(?);

fazer na mao eu sei…gostaria de saber se eu colocasse tipow…
con.resultset.getString(?);

nao sei se consegui esplicar direito…mais gostaria saber se existe algum comando desse tipo.

obrigado pelas as ajudas.

4 Respostas

fiaux

Não sei se eu entendi direito… mas uma coisa que você pode fazer é consultar o metadados do banco para “descobrir” algumas coisas.
Essa maneira automágica que você quer não existe não.

robinsonbsilva

Jovem, você terá que usar metadados.

Veja este artigo:
http://www.guj.com.br/java.tutorial.artigo.24.1.guj

L

Já fiz algo parecido com essa sua idéia aí e funcionou usando DatabaseMetaData… o que está no tutorial citado acima

dooda

um pequeno exemplo que fiz ontem inclusive… :smiley:

public class App {

	public static void main(String[] args) {
		try {
			//Use sua conexão aqui, por que usei minha SingleConnection...
			Connection conn = SingleConnection.getInstance().getConnection();
			System.out.println("Oba...");
			
			
			DatabaseMetaData metaData = conn.getMetaData();
			ResultSet resultSet = metaData.getTables(null, null, "%", null);
			while (resultSet.next()) {
				//Listando somente o que fot tabela normal...
				if (resultSet.getString(4).equals("TABLE")){
				    System.out.println("\n\n");
					System.out.println("\n\nTabela: " + resultSet.getString(3));
					Statement stmt = conn.createStatement();
					// Tabela a ser analisada
					ResultSet rset = stmt.executeQuery("SELECT * from " + resultSet.getString(3));
					   
					ResultSetMetaData rsmd = rset.getMetaData();
					
					// retorna o numero total de colunas
					int numColumns = rsmd.getColumnCount();
					System.out.println("Total de Colunas = " + numColumns);
					
					// loop para recuperar os metadados de cada coluna
					for (int i=0; i<numColumns; i++) {
					    System.out.print(i+1 + " Nome da Coluna=" + rsmd.getColumnName (i + 1));
					    System.out.print(" Tipo=" + rsmd.getColumnType (i + 1) );
					    System.out.print(" Nome do Tipo=" + rsmd.getColumnTypeName (i + 1));
					    System.out.println(" Casas Decimais=" + rsmd.getScale(i + 1));
					}					
				}
			}
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

Tirei parte do código de outro exemplo cedido aqui no forum mesmo, mas não lembro de onde…
se alguem reconhecer… peça os méritos… :wink:

Abraço…

Criado 17 de julho de 2008
Ultima resposta 18 de jul. de 2008
Respostas 4
Participantes 5