Primeiro registro no BD [RESOLVIDO]

8 respostas
lucaslzl

Bom dia,

gostaria de saber se existe uma maneira para testar se não existem registros ainda no banco de dados, pois preciso cadastrar uma consulta sendo que o cliente é novo.

Obrigado.

8 Respostas

vanessa.tenorio
/******************************************************************************
     *                                                                              *      
     * Faz consuta no bd do ID do ultimo valor inserido na tabela departamento do BD      *
     *                                                                              *
     *****************************************************************************/
    public int encontrarUltimoIDDepartamento() {

        Conexao.abrirConexao();
        String comando = "SELECT  LAST_INSERT_ID(idTotalDepartamento) FROM departamento order by idTotalDepartamento desc limit 1";

        int comparaIDDepartamento = 0;

        try {
            PreparedStatement ps = Conexao.conexao.prepareStatement(comando);

            ResultSet rsDados = ps.executeQuery();
            System.out.println("t1");
            while (rsDados.next()) {

                comparaIDDepartamento = rsDados.getInt("LAST_INSERT_ID(idTotalDepartamento)");

            }
            Conexao.fecharConexao();

        } catch (Exception e) {

            e.printStackTrace();
        }

        return comparaIDDepartamento;
    }

Este método traz o último ID (chave de identificação ) que representa a última inserção na tabela departamento, se ID = 0, então não há nenhum dado cadastrado nesta tabela.
Ah, verificar o que este método retorna quando nao há nada cadastrado.
Espero ter ajudado!

thiago_pco

Não entendi certamente o que seria a sua dúvida.
Mas partindo de que você quer verificar apenas se uma determinada tabela possui dados, poderia usar um count na tabela.

SELECT count(id) 
FROM Tabela

Caso o resultado do select seja maior que 0, significa que possui registros.
Cuidado com o tamanho da tabela, pode acarretar erros de performance(Mesmo o BD se organizando com a função count).

vanessa.tenorio

[email removido:
]Não entendi certamente o que seria a sua dúvida.
Mas partindo de que você quer verificar apenas se uma determinada tabela possui dados, poderia usar um count na tabela.

SELECT count(id) 
FROM Tabela

Caso o resultado do select seja maior que 0, significa que possui registros.
Cuidado com o tamanho da tabela, pode acarretar erros de performance(Mesmo o BD se organizando com a função count).


Excelente, Thiago! Eu não havia pensado neste contador! :slight_smile:

lucaslzl

Tem como você dar um exemplo de um código utilizando isso que você disse?

lucaslzl

O código que fiz ficou assim:

String sqlteste = "SELECT count(idcliente) FROM clientes"; 
try {
	ResultSet contagem = con_clientes.s.executeQuery(sqlteste);
} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

Mas quando tento comparar com int dá tipos invalidos. Como faço para ter o retorno da quantidade de tabelas no banco de dados?

wagnerfrancisco

Você tem que extrair o resultado do ResultSet. Algo assim:

String sqlteste = "SELECT count(idcliente) as qtd FROM clientes"; 
try {
	ResultSet rs= con_clientes.s.executeQuery(sqlteste);

        int quantidade = 0;
        if (rs.next()) {
             quantidade = rs.getInt("qtd");
        }
} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}
thiago_pco

Lucas,

para obter a quantidade de linhas afetadas pelo count, vc deve capturar esses dados do ResultSet. Como?

O ResultSet possui métodos para capturar isso.
Para o nosso caso o getInt(), pois o retorno de count é um inteiro com o número de registros encontrados ou existentes.
O método getInt possui duas sobrecargas:

1 - getInt(String columnLabel) -> Onde é passado o nome da coluna (Caso tenha dado nome a ela no select ou saiba o nome que ela virá).
2 - getInt(int index) -> Onde é passado o index da coluna, que no nosso caso é 0 pois so irá vir 1 linha e 1 coluna. É esse que vamos usar.

Ficaria mais ou menos assim:

String sqlteste = "SELECT count(idcliente) FROM clientes";   
try {  

    ResultSet contagem = con_clientes.s.executeQuery(sqlteste);  
    int qtdRegistros = contagem.getInt(0); //Ou o nome da sua coluna.

    if(qtdRegistros >0){
      // Existe registros.
     }

} catch (SQLException e) {  
    // TODO Auto-generated catch block  
    e.printStackTrace();  
}

Desculpa qualquer erro, faz muito tempo que não vejo JDBC.
Já ouviu falar de hibernate? Dá uma olhada, pode facilitar bastante a sua vida!
Flws

lucaslzl

Já ouvi falar de hibernate, mas nunca baixei ou tentei utilizar. Vou dar uma pesquisada nele.

Muito Obrigado pessoal, foram de grande ajuda :).

Criado 8 de agosto de 2012
Ultima resposta 9 de ago. de 2012
Respostas 8
Participantes 4