Sou iniciante em java e não estou conseguindo rodar uma aplicação com a tabela vazia, da uma exceção(catch) da uma mensagem de erro, dai surgiu a dúvida posso tratar esta tabela não dando nenhuma mensagem de erro ou existe um método que pega a tabela vazia
Que tabela? É um banco de dados? Uma estrutura em memória?
Qual Exception? Qual mensagem de erro?
Cola o código aqui e aponta onde está o erro. Precisamos de mais contexto para te ajudar.
É uma tabela de um banco de dados
Dá um Exception quando a tabela do banco de dados esta vazia
public void mostrar_dados()
{
try
{
// testar_navegacao();
tf_codigo.setText(con_cidade.resultset.getString("codigo"));
tf_nome.setText(con_cidade.resultset.getString("nome"));
}
catch(SQLException erro)
{
JOptionPane.showMessageDialog(null,"Não localizou dados "+erro);
}
}
Oi boa noite!
Você deu uma olhada no meu problema?
obrigado
Tenta isolar o código, para evitar que a conexão ou o resultset cheguem nulos nesse trecho do código.
if (con_cidade == null) {
return; //sem conexão com o BD
}
if (con_cidade.resultset == null) {
return; //resultset não possui dados
}
tf_codigo.setText(con_cidade.resultset.getString("codigo"));
tf_nome.setText(con_cidade.resultset.getString("nome"));
Ola Jonathan!
O erro ainda permanece
E a tabela do banco de dados que esta vazia
Tenta fazer o seguinte:
if (con_cidade.resultset.first()) {
tf_codigo.setText(con_cidade.resultset.getString("codigo"));
tf_nome.setText(con_cidade.resultset.getString("nome"));
}
Já tentei colocar este código, mas quando a tabela e vazia da uma exceção, mas eu quero pegar quando a tabela e vazia e controlar a navegação, tipo ir para o primeiro registro, para o próximo, anterior, ultimo estas coisas.
obrigado
Entao coloquei o seguinte codigo e deu certo
if (con_cidade.resultset.first() == false)
{
JOptionPane.showMessageDialog(null,"Não existem dados para esta cidade");
return;
}
so vai entrar aqui quando a tabela estiver vazia e nao da a excessao
e para controlar o botao de navegacao (primeiro, proximo, anterior, ultimo) que foi clicado usei uma variavel
e para controlar a linha da tabela usei uma outra variavel e ta funcionando
obrigado
Não é necessário testar a igualdade de valor pois o first()
já retorna um valor boolean
, no seu caso, como só entra no if se o retorno for false
você só precisa fazer a negação, ficando assim!
if (!con_cidade.resultset.first())
Só não entendi o porquê do código que te passei não ter funcionado, pois você fez exatamente o que te falei, a mesma coisa, só que usando a negação para exibir uma mensagem de que não existiam dados, no exemplo que te passei o código só seria executado caso houvessem dados.
Quando excluo um registro auto-increment ele vai para onde? Fica algum lixo, acho que esse e o problema
Normalmente não, a não ser que você esteja mantendo uma instância do objeto que contém dados do registro recuperado para exclusão.
Acho que o problema ta no banco de dados, porque rodo o mesmo sql no banco e da o mesmo efeito, ta como notnull no banco
Por favor se você puder me ajudar, to com este problema e não to conseguindo continuar meu trabalho.
Obrigado
Desculpe e obrigado Jonathan expressei errado, deu certo, consigo saber quando a tabela esta vazia no codigo, mas quando excluo registros, e volto a incluir o mesmo continua acrescentando na sequencia, quero saber como faco para quando excluir um registro, apague na tabela, limpando a mesma. As tabelas foram convertidas do access para mysql e ta como autoincrement e notnull
obrigado
Quando você diz remover da tabela seria a tabela do banco de dados?
Ou você se refere a JTable?
Na tabela no banco de dados
Basta recuperar o id do registro desejado e fazer a exclusão via sql pela classe responsável.
Excluir o registro estou ate conseguindo, mas o meu problema e quando vou inserir um novo registro, mesmo com a tabela vazia, ele começa do ultimo registro, por exemplo, vou la e incluo 10 registros e excluo os mesmos e quando vou incluir novo registro, ele começa a partir do registro 11, quero limpar a tabela. Lá no banco de dados ta como autoincremet e notnull
Não basta excluir todos os dados, você precisar zerar o auto_increment referente à essa tabela. No MySQL, isso é feito assim
ALTER TABLE {tablename} AUTO_INCREMENT = 1
Substituindo {tablename} pelo nome da tabela.
Referência: https://stackoverflow.com/questions/8923114/how-to-reset-auto-increment-in-mysql
Para eliminar todos os registros e já zerar o auto_increment (basicamente, recriando a tabela), você pode dar uma olhada no comando truncate.
Abraço.