Duvida bd select com java

oi meus amigos,tudo bem? bem fiz um programa de cadastro de impressoras e esta rodando funcioando bem, mais eu queria na parte do cadastro do tombamento comparar se existe algum tombamento já cadastrado, pois um tombamento é unico,como posso fazer esse procedimento.

obrigado

Vamos ver se eu entendi a pergunta…
Na tabela onde são guardados os tombamentos (seja lá o que for isso…) NÃO podem existir dois iguais. Se esse for o caso, você deve definir um índice único para esse campo no banco de dados (uma alternate key, se esse campo não for a chave).
Particularmente, eu prefiro definir a restrição no banco e tratar o erro na aplicação, avisando o usuário que o código já existe.

É isso mesmo! eu estava fazendo desse jeito, mais estava tando erro

try
{
sqlinsert = ("select from * impressoras where tombo");
if (tf_tombo == con_impressoras.resultset.last() )
JOptionPane.ShowMessageDialog(null,"esse tombamento já esta cadastrado no sistema");

catch  (SQLException erro )
(
JOptionPane.ShowMessageDialog(null,"esse no sistema."+erro);


)

agora como posso fazer a restrição do banco como vc disse.
obrigado

Qual a mensagem de erro que o SQLException emiti?

Se o numero do tombo for a única chave primária da tabela, ele já vai ser único, se não for, da para procurar com um sql:

select numero_tombo, count(numero_tombo) from tabela_tombo group by numero_tombo having count(numero_tombo) > 1

blz Bruno,como vc esta? entao e aconselhado eu criar uma tabela so para o tombo? pois estou usando tudo numa tabela só, a respeito do primary key ele é usado em codigo automatico que coloquei, entao cada vez que o usuário cadastra um impressora tem uma numeração crescente como 1,2,3,4 e por ai vai

o que e having?

[quote=kerbage]blz Bruno,como vc esta? entao e aconselhado eu criar uma tabela so para o tombo? pois estou usando tudo numa tabela só, a respeito do primary key ele é usado em codigo automatico que coloquei, entao cada vez que o usuário cadastra um impressora tem uma numeração crescente como 1,2,3,4 e por ai vai

o que e having?
[/quote]
Aquilo só foi um exemplo, pegue o nome da tua tabela e os teus campos e coloque lá.

having é um operador para trabalhar com agrupamentos, funciona como se fosse o where.

Mesmo que a tabela já tenha uma chave primária (pk), se não podem haver dois registros com o mesmo número de tombamento você pode criar um índice (com unicidade) para este campo também, tranformando-o em uma chave-alternativa. O código de erro que vai retornar depende do seu banco de dados. Teste a query de insert na ferramenta do banco (inserindo um duplicado) e veja o número do erro.

certo mais no caso eu cologo no meu codigo no netbeans quando eu vou salvar meu registro, ou eu faço isso no banco mesmo…

No banco mesmo (com algum utilitário de query que acompanhe o mesmo). Qual banco você esta usando?

estou começando a usar banco de dados,então comecei pelo mais simples que e o access!

O Access é uma das piores opções para usar com Java, pois é necessário usar a ponte jdbc -> odbc. Se for um projeto novo, considere seriamente a possibilidade de usar o PostgreSQL (www.postgresql.org/) que é livre e tem uma interface amigável.

vlz pela dica! o portgree é fácil de operar; e como faço a conexão com o java especificamente com o netbeans

No Netbeans, vá para janela serviços (Ctrl+5) e expanda o nó Banco de dados e o nó drivers, no Netbeans 6.7 já vem o driver do postgres. Caso não tenha, click com o botão direito em drivers e escolha no driver. Para o postgres é apenas um jar (disponível no site). Depois tente conectar: click com o botão direito sobre o driver do PostgreSQL e escolha conectar utilizando, preencha os campos e teste. Se não me engano, a instalação padrão do postgres não aceita conexões externas (outras máquinas), somente aceita da máquina onde esta instalado (situação onde tudo esta instalado na mesma máquina).

putz galera obrigado mesmo pela força que vcs estao me dando… fiz um código e não esta dando erro, mais tb não tem nenhum resultado, que é comparar se existe algum tombamento cadastrado.
aqui esta o código:

  try
        {
       while( con_impressoras.resultset.last());
        String insert = ("Select From * cidade by tombo ");
        con_impressoras.executeSQL(insert);
           mostrar_dados();
           navega = 1;
    }


        catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null,"Não foi possível ir para o registro anterior"+erro);


        }

pq nao acontece nada! sera que não estou fazendo o update, ou tenho que comparar todos os campos que fiz no registro?

Vamos lá:

  1. Não é "Select From * cidade by tombo ", é “Select * From…”
  2. Evite o uso de “*” nos selects, coloque a lista de campos. É mais rápido (o parser do SGDB não tem que pesquisar o dicionário todo da tabela) e mais elegante.
  3. Para consultar dados (select) use:

try { Statement st = cn.createStatement(); ResultSet rs = st.executeQuery("SELECT vl_parametro " + " FROM parametro " + "WHERE no_parametro = '" + parametro + "'"); if (rs.next()) { valor = rs.getString(1); } rs.close(); st.close(); } catch (SQLException e) { System.out.println("Erro em DbUtil.getParametro: " + e.getMessage()); }
4. Utilize o método [execute] do objeto Statement para insert, delete e update.

Uma das coisas mais importantes no trabalho de um desenvolvedor de software é manipulação de dados em um SGDB via SQL, praticamente tudo acaba em um database. Quando você já estiver confortável com o uso do JDBC, estude a JPA (java persistance API).

Demente mais uma vez obrigado. Eu vou fazer as alterações e cologo aqui no fórum o resultado,alias vc tem algum tutorial bom de sql que conheça?

obrigado

No site http://pgdocptbr.sourceforge.net/pg80/tutorial-sql.html tem um muito bom!

agora surgiu outro problema clássico! bem, agora não estou conseguindo fazer a alteraração do cadastro que o usuário queira mudar, dar sempre erro!No caso aqui estou querendo atualizar nome,origem,destino e situação, o tf_codigo não deve ser alterado, pois é um controle de equipamentos que foram cadastrados tipo cadastro 1,2,3,4 e por ai vai…
aqui esta o código,ele esta reclamando que falta um operador faltando nas expressões.

try
{
    String sql = "UPDATE cidade SET nome ='"+tf_nome.getText()+"'"+
            "origem = '"+ tf_origem.getText()+"'"+ "destino = '"+tf_destino.getText()+"situacao = '"+tf_situacao.getText()+"'Where codigo = "+tf_codigo.getText();
             con_impressoras.statement.executeUpdate(sql);
             JOptionPane.showMessageDialog(null,"Alteração realizada com sucesso");
            //atualiza banco de dados resultset //
            con_impressoras.executeSQL("Select *from cidade +"+ordenacao);
            con_impressoras.resultset.next(); //posiciona o primeiro registro//
            mostrar_dados();
    }
catch (SQLException erro)
{

    JOptionPane.showMessageDialog(null,"Erro ao tentar Alterar o Registro"+erro);
}
      

Falta a vírgula, separando a lista de campos no update:
UPDATE SET =valor , =valor, etc… WHERE <condição>