Erro!

13 respostas
B

Olá pessoal!
estou com dificuldade de compilar o seguinte componente:

package com.empresa.beans;
import java.io.Serializable;
import java.sql.*;

public class AcessoDB implements java.io.Serializable
{

   public AcessoDB(){}

         public String getConsulta()
         {
           try{

           String dsn = "jdbc:odbc:banco_integra";
           String user= "";
           String senha ="";

           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           Connection con = DriverManager.getConnection(dsn, user, senha);

           Statement st = con.createStatement();
           String sql = "select * from tb_pessoal";

           ResultSet rs = st.executeQuery(sql);

                     while(rs.next())
                     {
                        return(rs.getString("nome"));
                     }

         st.close();
         con.close();

           }

           catch(Exception e)
           {
             System.out.println("Sem conexão...");
           }

         }

}

Está dando o erro : missing return statement
Pode me ajudar rodar este bean?
valeu!

13 Respostas

F

Creio que de problema , vc colocar dentro do wile o return
tenta:

while(rs.next()){
rs.getString(nome);
}
return nome;

catch(){
}
finally{
con.close();
st.close();
}
B

Felipe deu erro, colocando o codigo como sugeriu:

while(rs.next()){ 
rs.getString(nome); 
} 
return nome; 
}//fechando o try

catch(){ 
} 
finally{ 
con.close(); 
st.close(); 
}

rs.getString(“nome”) tambem deu erro sem aspas etc erro…
return nome?? nao declarei nome como uma variavel…não entendi. :?:

F

hehhe foi mal cara esqueci de declarar

String nome1=rs.getString(“nome”);

return nome1;

opa Bacana repare que é para vc manter seu código, apenas retire o return do while, e declare acima…

so coloquei o finally , a mais, mas mantenha o catch como estava no seu código

B

continua dando erro, …o codigo ficou assim:

package com.empresa.beans;
import java.io.Serializable;
import java.sql.*;

public class AcessoDB implements java.io.Serializable
{

public AcessoDB(){}

public String getConsulta()
{

try{

String dsn = "jdbc:odbc:banco_integra";
String user= "";
String senha ="";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dsn, user, senha);

Statement st = con.createStatement();
String sql = "select * from tb_pessoal";

ResultSet rs = st.executeQuery(sql);

while(rs.next())
{
       String Nome = rs.getString("nome");
}

return Nome;



}//fecha try

catch(Exception e)
{
System.out.println("Sem conexão...");
}

finally
{
  con.close();
  st.close();
}


}

}

Pode corrigir pra mim?
valeu!

J

Olá,

bom o problema que tem ali é o seguinte:

while(rs.next()) 
{ 
String Nome = rs.getString("nome"); 
} 

return Nome;

Vamos analisar o qeu vc esta fazendo e o qeu vc está qeurendo... Pelo que eu percebi vc está qeurendo retornar todos os valores do recordSet. bom um erro esta vc declarando a String dentro do while, outro é que o retorno qeu vc terá será apenas o ultimo registro da tua tabela, consegue perceber o porque??? Espero qeu sim...

Então o que vc precisa fazer é criar um array de Strings e assim ir gravando dentro do while em cada posiçao do array o retorno do rs.
String[] retorno = null;
int count=0;
while(rs.next())
{
    retorno[count]=rs.getString("nome");
    count++;
}
return retorno;

Espero ter ajudado!

F

Exatu juju tem toda razão.Desculpe as vezes tento responder as coisas aqui rapidamente no horário de trabalho, e muitas vezes tenho que fechar o o browser , ou não da para ler direito a dúvida…

Nesse caso pode usar também um Arraylist. :wink:

J

hahahaha jujU é foda… hahahaha
ta certo que jujo num eh um dos apelidos mais masculinos, mas é apelido de infancia, dai sabe como é né…

bom, e quanto ao negocio das duvidas é normal isso ai, as vezes tbm tenho que responder meio sem pensar… é por isso qeu temos os amigos aqui =)

Abraço!

B

meus caros, ainda está dando erro : :smiley:
O codigo está exatamente assim:

package com.empresa.beans;
import java.io.Serializable;
import java.sql.*;

public class AcessoDB implements java.io.Serializable
{

public AcessoDB(){}

public String getConsulta()
{

try{

String dsn = "jdbc:odbc:banco_integra";
String user= "";
String senha ="";

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dsn, user, senha);

Statement st = con.createStatement();
String sql = "select * from tb_pessoal";

ResultSet rs = st.executeQuery(sql);

String[] retorno = null;
int count=0;
while(rs.next())
{
    retorno[count]=rs.getString("nome");
    count++;
}
return retorno;


}//fecha try

catch(Exception e)
{
System.out.println("Sem conexão...");
}

finally
{
con.close();
st.close();
}


}

}
J

Olá

viu, sempre que colar um codigo com erro, poste tbm a mensagem de erro que da. Pois assim, fica mais facil a identificação do erro

Aguardo o post!

Obrigado até mais!

B
Ok.O erro é o :

incompatible types

found :java.lang.String[]

required:java.lang.String

return retorno;

^

Cannot resulve symbol

symbol : variable con

location : class com.empresa.beans.AcessoDB

con.close();

^

st.close();

^

obrigado

J

Olá colega…

bom, um erro é qeu vc esta retornando um array, porém no cabeçalho do método ele requer um retorno String simples. o que vc tem qeu fazer, eh colocar la no método String[].

Bom, quando ao con, t o st, eles não serão visiveis fora do try, pois foram declarados la dentro. oq eu vc tem qeu fazer eh declara-los antes do try!

Valew!

Até mais!

B

Olha eu denovo…
beleza o codigo agora compilou mas quando puxo ele como um bean no jsp ele retorna null…O array nao está sendo implementado…Por que?
codigo:

package com.empresa.beans;
import java.io.Serializable;
import java.sql.*;

public class AcessoDB implements java.io.Serializable
{

 public AcessoDB(){}

        public String[] getConsulta()
        {

          String[] ret=null;

         try{

             String dsn = "jdbc:odbc:banco_integra";
             String user= "";
             String senha ="";

             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             Connection con = DriverManager.getConnection(dsn, user, senha);

             Statement st = con.createStatement();
             String sql = "select * from tb_pessoal";

             ResultSet rs = st.executeQuery(sql);


                int i=0;
                while(rs.next())
                 {
                   ret[i]=rs.getString("nome");
                   i++;
                 }



              }


                 catch(Exception e)
                 {
                   System.out.println("Sem conexão...");
                 }

                 return ret;






         }

}
J

Olá

Experimentes colocar esse código dentro do construtor de sua classe… realmente quando vc criaum objeto dela ele vai retornar null

Até mais…

Criado 27 de janeiro de 2004
Ultima resposta 29 de jan. de 2004
Respostas 13
Participantes 3