É o seguinte, estou obtendo um valor através de um textfield e gostaria de buscar esse valor em uma coluna da minha tabela. Caso, já tenha um registro igual na tabela gostaria q ele retornasse uma mensagem negando um novo cadastro, caso contrário, permitindo.
Fiz um código mas ele n está funcionando direito pois só mostra que o cadastro está habilitado mesmo eu já tendo um registro na tabela.
Já testei aqui até com outra coluna da tabela para ver se era alguma outra incompatibilidade… mas não deu certo
Creio que ele não está realizando a consulta direito pois sempre está chamando o “catch”… ou seja, tudo que tem ali depois da consulta ele não está “enxergando”
Substitui as linhas do código que você postou porém deu erro nas três linhas!
cannot find symbol
symbol : method prepareStatement(java.lang.String)
location: interface java.sql.Statement
st.prepareStatement(“SELECT * FROM OBJ WHERE DID1=?”);
cannot find symbol
symbol : method setString(int,java.lang.String)
location: interface java.sql.Statement
st.setString(1, tf_obj1.getText());
executeQuery(java.lang.String) in java.sql.Statement cannot be applied to ()
ResultSet rs = st.executeQuery();
3 errors
Mude a lógica do programa, não use uma exception para testar uma condição…faça esse teste com lógica, verifique se o retorno da query é nula, ou se retorna dados e dessa forma construa sua lógica, evite usar tratamento de exceção como controle de fluxo de seu programa.
Estou usando o catch tbm justamente pq para conectar ao bd eu preciso de um bloco try… dai tenho o catch como forma de tratar os eventos.
tentei utilizar umas condições aqui mas continua dando o mesmo problema.
O programa detecta corretamente quando a posição inserida pelo usuário está ocupada, porém não mostra nada quando essa posição está livre! (o catch que deveria fazer isso teoricamente rs…)
Veja seu eu entendi bem, vc quer mostrar uma mensagem de indiponível se localizar no banco de dados e outra de disponível se não localizar.
veja se isso atende:
ps.setString(1, tf_obj1.getText());
ResultSet rs = ps.executeQuery();
rs.last();
int numberOfRows = rs.getRow();
if (numberOfRows != 0){
while(rs.next()){
JOptionPane.showMessageDialog(null,"Posição Ocupada! \nSelecione outra posição!","Mensagem!",",JOptionPane.ERROR_MESSAGE);
tf_obj1.setText(null);
//até aqui tudo bem, ele seta para null o campo de texo.
}
}else{
JOptionPane.showMessageDialogull,"PosiçãoDisponível!","Mensagem!",JOptionPane.INFORMATION_MESSAGE);
}
st.close();
con.close();
ps. não testei o código, pode ser que precise de algum ajuste.
[quote=rafaelglauber]Veja seu eu entendi bem, vc quer mostrar uma mensagem de indiponível se localizar no banco de dados e outra de disponível se não localizar.
veja se isso atende:
ps.setString(1, tf_obj1.getText());
ResultSet rs = ps.executeQuery();
rs.last();
int numberOfRows = rs.getRow();
if (numberOfRows != 0){
while(rs.next()){
JOptionPane.showMessageDialog(null,"Posição Ocupada! \nSelecione outra posição!","Mensagem!",",JOptionPane.ERROR_MESSAGE);
tf_obj1.setText(null);
//até aqui tudo bem, ele seta para null o campo de texo.
}
}else{
JOptionPane.showMessageDialogull,"PosiçãoDisponível!","Mensagem!",JOptionPane.INFORMATION_MESSAGE);
}
st.close();
con.close();
ps. não testei o código, pode ser que precise de algum ajuste.[/quote]
Rafael, testei isso ai mas n deu certo tbm.
Ele não “executa” essas linhas, digamos assim, e vai direto pro catch()
[quote] Rafael, testei isso ai mas n deu certo tbm.
Ele não “executa” essas linhas, digamos assim, e vai direto pro catch()[/quote]
Se ele vai “direto” para catch então tá ocorrendo alguma exceção, pode coloca-la aqui para vermos?
ps. coloque um break-point no inicio do código e utilizando sua IDE verifique o que tá ocorrendo, tá faltando pequenos ajuste no código para seu problema ser resolvido, um pouco de esforço e terá seu resultado.