Retornando valor errado (URGENTE)

9 respostas
rodrigoboeing

Galera é o seguinte...

Tenho aqui no meu sistema uma .class onde eu coloco todos meus comandos do Banco de dados... Abaixo a DBEmprestimo.

package Banco;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JOptionPane;

public class DBEmprestimo extends DB {

    
    public DBEmprestimo() {
        createStatement();
    }


       public boolean retornarCodEmp() {
        try {
            ps = dbc.con.prepareStatement( "SELECT MAX(EMPRESTIMO.COD_EMP) FROM EMPRESTIMO;" );
            r = ps.executeQuery();

            while ( r.next() ) {
                int codigo = 0;
                codigo = r.getInt(1);
                JOptionPane.showMessageDialog(null, "Codigo = " + codigo);// Aqui ele me retorna o valor correro
            

            
            }
        } catch(SQLException ex) {
            new DBErros().mensagemDeErro( ex );
            return false;
        }
        return true;
    }
  
   
}

Acima no meu public boolean retornarCodEmp() tenho uma variavel codigo onde me retorna o valor da SQL que é executada... Então eu preciso enviar esse valor para uma variável em uma Tela do meu Sistema que é a TelaEmprestimo... Código abaixo...

package Telas;

import Banco.DBAluno;
import Banco.DBEmprestimo;
import Banco.DBFuncionario;
import Banco.DBItemEmprestimo;
import Banco.DBLivro;
import Banco.DBMateriais;
import Banco.DBMidias;
import Banco.DBProfessor;
import java.sql.Statement;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;


public class TelaEmprestimo extends javax.swing.JInternalFrame {
   // public class TelaEmprestimo extends DB {
    

    public TelaEmprestimo(TelaPrincipal telaPrincipal) {
        initComponents();

//.... restante do código...

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    
    DBEmprestimo dbp = new DBEmprestimo();
        
            if( dbp.retornarCodEmp() ) {
            boolean codigo = dbp.retornarCodEmp();

                JOptionPane.showMessageDialog(null, "Codigo = " + codigo);
           }
    
    
}

Então na minha TelaEmprestimo eu realizo esse comando ai no final só que a variavel codigo desta dela vem com o valor true, o que deveria me retornar o mesmo valor que a minha DBEmprestimo...

Alguém poderia me ajudar???

Grande abraço :D

9 Respostas

berg.pb

Anlisando passo a passo:

  1. vc tem um try/catch… se o try tiver êxito, o método vai retornar TRUE pq o return true está fora do try/catch.
  2. o catch só será executado se bouver algum impedimento (erro, execção, et\c…). como o return false está dentro do catch, só retornará FALSE se ocorrer o CATCH.
  3. então, se ocorreu tudo bem da pesquisa, virá TRUE que será ‘abosrvido’ pelo atributo local dpb do seu main.

Resumindo… seu código está ok!

mduques
public int retornarCodEmp() {   
        int codigo = -1;   
        try {   
            ps = dbc.con.prepareStatement( "SELECT MAX(EMPRESTIMO.COD_EMP) FROM EMPRESTIMO;" );   
            r = ps.executeQuery();    
            if ( r.next() ) {   
                codigo = r.getInt(1);   
            }   
        } catch(SQLException ex) {   
            new DBErros().mensagemDeErro( ex );   
            return -1;   
        }   
        return codigo;   
    }   

 int result = dbp.retornarCodEmp() ;
  if( result >= 0) {   
                JOptionPane.showMessageDialog(null, "Codigo = " + result);   
  }
ViniGodoy

A melhor forma de corrigir esse tipo de erro é rodar o programa com um depurador, e executar os comandos passo-a-passo. Por que você não faz isso? A maior parte das IDEs modernas suportam esse recurso.

Outra coisa, dê uma olhada nos “returns” do seu código. Em momento nenhum vc está dando return na variável que você quer.

rodrigoboeing

Kra eu ja fiz isso, até porque uso o NetBeans, mais ele não da erro só retorna o valor errado… Meu professor comentou alguma coisa que eu teria que tratar esses Código para inteiro mais eu não entedi como fazer isso…

rodrigoboeing

mduques PERFEITOOO esse seu código…

Muito obrigado, funcionou perfeitamente :D…

valewww mesmo, vc ajudou a me formar na facul com esse código :smiley:
t++

ViniGodoy

Nossa cara, você não pode estar se formando com uma dúvida dessas.
É básica demais!

Desculpe a sinceridade, mas você pode ter sérios problemas na sua vida profissional se acabar se formando assim!

rodrigoboeing

Kra nunca tive uma aula de java na minha faculdade… To me estrepando sozinho, pegando um pouco daqui um pouco da li, e tem um professor meu que manja MUITO de Java que ta me ajudando… Tivemos uma noção muito básica de Java nada de AWT Swing nada disso, nem usamos nenhuma ferramente foi só na mão… Então pra fazer o TCC to tendo que me virar kra… Eu trabalho com aplicações WEB em PHP e webDesign, trabalho com arte gráfica e montagem de revistas banner para Gráfica… Então Java por enquanto é minha diversão onde eu to aprendendo aos poucos…

Só sei de uma coisa esse ano tenho que ser aprovado se não to enrolado…

Valewww aos que me ajudaram…

ViniGodoy

É que isso não foi uma dúvida de java, mas ainda mais básica, no tipo de dado.

Mas enfim, é só quebrando a cabeça, se ferrando e quase reprovando que a gente aprende mesmo… eu já passei por isso 3 vezes. :wink:

rodrigoboeing

É kra foi difícil, e ainda deixei pra ultima hora pra fazer ai ferrou mais, pior que eu sou o mais errado da história…

Mais eu to me esforçando pra kramba…

Falow t+++…

Obrigado novamente…

Criado 2 de outubro de 2008
Ultima resposta 3 de out. de 2008
Respostas 9
Participantes 4