Tratar erro de duplicidade de banco no postgre

6 respostas Resolvido
F

olá a todos quero uma ajudinha em meu código java.É o seguinte tenho um projeto e uso o postgresql. até aqui tudo bem. Mas, quando eu coloco meu método de criar tabela ele até cria só que se eu abrir novamente o form, como já tem ela(tabela) criada ele da uma mensagem dizendo que já existe tal tabela e eu quero tratar isso, não sei se com um if resolve e não sei onde colocar para poder tratar isso ou se tem um comando específico.

6 Respostas

igomes

Hibernate ?

F

tem algo mais simples? rsrs sei lá quando chamar meu método de criar tabela ele ir no banco ver se tem alguma tabela com aquele nome e enviar tabela ja existente

igomes

Posta seu código
O ideal é você rodar seu Sql direto no banco e depois fazer suas operações pelo java

F

CONEXÃO COM O BANCO:

package ConectarBanco;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;

public class ConectarBanco {
    
  String caminho = "jdbc:postgresql://localhost:5432/postgres";
    String usuario = "postgres";
    String senha = "postgres";
    String driver = "org.postgresql.Driver";
    public Statement stm;
    public ResultSet rs;
    public Connection con;
    
    public void conectar(){
        try {
            con = DriverManager.getConnection(caminho, usuario, senha);
           // JOptionPane.showMessageDialog(null, "conectado ao banco");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao conectar\n" + ex.getMessage());
        }
    }

public void executarSql(String sql){
        try {
            stm = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            rs = stm.executeQuery(sql);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar String SQL\n" + ex.getMessage());
        }
   }

public void desconectarBanco(){
        try {
            con.close();
            //JOptionPane.showMessageDialog(null, "Desconectado com sucesso!");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao desconectar\n" + ex.getMessage());
        }
    }

}

MÉTODO PARA CRIAR UMA TABELA

package Tabelas;

import ConectarBanco.ConectarBanco;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class Tabelas {
    
    ConectarBanco conectar = new ConectarBanco();
    String conseguir;
    
    public void criarTabelaCadastro(){
        
        try {
           
            conectar.conectar();
            conectar.stm = conectar.con.createStatement();
            String sql = "CREATE TABLE cadastro(cod serial NOT NULL,nome character varying(50) NOT NULL,"
                    + "cpf character varying(20) NOT NULL,rg character varying(20) NOT NULL,estado_civil character varying(10) NOT NULL,"
                    + "CONSTRAINT cod PRIMARY KEY (cod))";
            conectar.stm.executeUpdate(sql);
            JOptionPane.showMessageDialog(null, "Tabela cadastro criada com sucesso");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possível criar tabela\n" + ex.getMessage());
        }
        
        
    }

}

EVENTO AO INICIAR O FORM:

public TelaCadastroMedico() {
        initComponents();
CriarTabelas tabelas = new CriarTabelas();
tabelas.criarTabelaCadastro();
}

nessa parte ta beleza so que eu quero tratar um erro que quando a tabela ja existe tipo assim executei o form criou a tabela ai quando eu fechar e executar novamente não de a mensagem “NÃO FOI POSSÍVEL CRIAR A TABELA TAL POIS ELA JÁ EXISTE” é isso que ta pegando e sim lembrando que to usando o netbeans

Jailson_da_Silveira
Solucao aceita

Opa! Então, no seu sql de criação da tabela, tente colocar a cláusula not exists usando “CREATE TABLE IF NOT EXISTS”, e não apenas “CREATE TABLE”.

F

não é que deu certo Jailson_da_Silveira muito obrigado viu me ajudou muito

Criado 29 de julho de 2016
Ultima resposta 30 de jul. de 2016
Respostas 6
Participantes 3