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
Validando se existe tabela no banco de dados. [RESOLVIDO]
9 Respostas
você conhece JPA?
ele tem uma configuração que faz exatamente isso!
sim!..que projeto que estou usando não é jpa.
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.
poderia postar um exemplo se possivel ?
Banco de dados é MySQL?
Se for,
SHOW tables FROM banco_de_dados;
Mostrará todas as tabelas do banco baco_de_dados
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
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 !!
valew drsmachado! obrigado pela orientação.
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();
}
}