Validando se existe tabela no banco de dados. [RESOLVIDO]

9 respostas
H

Olá pessoal gostaria de saber se tem alguma forma de eu validar se existe tabela X no banco de dados caso não eu mando criar

9 Respostas

Marlon_Meneses

você conhece JPA?
ele tem uma configuração que faz exatamente isso!

H

sim!..que projeto que estou usando não é jpa.

L

Com uma instãncia de java.sql.Connection vc pode obter o DatabaseMetaData e através dele analisar os objetos existentes no banco de dados.

H

poderia postar um exemplo se possivel ?

drsmachado

Banco de dados é MySQL?
Se for,

SHOW tables FROM banco_de_dados;

Mostrará todas as tabelas do banco baco_de_dados

paulomn

voce tambem pode tentar acessar a tabela x usando insert por exemplo, e com try catch pegar o erro e criar a tabela no catch, mais isso só em ultimo caso já que seria meio gambiarra… lol

Lindberg

para reparar as tabelas eu fiz isso

private void RepararTabelas() {



//-------------------- pega os nomes das tabelas no bamco de dados -------------------

		boolean fezw = false;



		String tabelasw = "REPAIR TABLE ";

		int regs;

		String qry;

		String[][] reg;

		ConexaoDados ac = new ConexaoDados( conex, usux, senx );

		if (ac.conecta())  {



			reg = new String[250][1];    



			qry = "show tables;";

			ac.getColumn(qry, reg, 1); 



			String virgw = "";

			int linw = 0;

			for (int lin = 0; lin < 250; lin++) {

			  	if (reg[lin][0] != null)  { 

			  		tabelasw += virgw + reg[lin][0]; 

					virgw = ", ";

			  		linw++;

			  	}

	  		}

       		ac.desconecta();



	  		tabelasw += ";"; 

			exsql repaw = new exsql( tabelasw, conex, usux, senx );

			repaw.ExecSQL();

			appentxt grr = new appentxt("LP/log.txt", "Reparou => "+tabelasw);  grr.addLinhaTexto();  



	

			mensagem("Reparou "+linw+" Tabelas");

		}

	}

ve se ajuda !!

H

valew drsmachado! obrigado pela orientação.

L

Esse código mostra como pegar as tabelas do banco. Se quiser pegar direto os nomes das tables, no ResultSet pegue a coluna TABLE_NAME.

public class ConnectionTest extends TestCase {

	public void test1() throws Exception {
		Connection c = DriverManager.getConnection("jdbc:mysql://localhost/xxx", "root", "root");
		DatabaseMetaData metaData = c.getMetaData();
		ResultSet rs = metaData.getTables(null, null, null, new String[] { "TABLE" });
		if (rs.next()) {
			ResultSetMetaData rsMetaData = rs.getMetaData();
			int columnCount = rsMetaData.getColumnCount();
			for (int i = 1; i <= columnCount; i++) {
				System.out.printf("%-20s", rsMetaData.getColumnName(i));

			}
			System.out.printf("\n");
			do {
				for (int i = 1; i <= columnCount; i++) {
					System.out.printf("%-20s", rs.getString(i));
				}
				System.out.printf("\n");
			} while (rs.next());
		}
		rs.close();
		c.close();
	}

}
Criado 14 de outubro de 2011
Ultima resposta 14 de out. de 2011
Respostas 9
Participantes 6