O que estou fazendo de errado!

Quando o select retorna 1 registro funciona , mas quando o select retorna mais que um registro dá o seguinte erro, “java.lang.ClassCastException”, em que estou errando, desculpem mas sou iniciante em java :smiley:

aqui vai um método para abrir o banco de dados
class ItemsNota
{

public String cod_produto="";
public String desc_produto="";
public String unidade="";
public String qtd_produto="";
public String val_unitario="";
public String val_total="";
public String icm="";
public String ipi="";

}

public ArrayList retornaDados2()
{
ArrayList dados = new ArrayList();

      try 
        {
          String selectStatement = "select v_codproduto,v_descricao from t_ite_nf where i_ordem=357";
          // "select t_ite_nf.i_ordem,t_ite_nf.v_codproduto,t_ite_nf.v_descricao,t_ite_nf.v_unidade,t_ite_nf.f_quantidade,t_ite_nf.f_unitario,t_ite_nf.f_val_total,t_ite_nf.f_icm,t_ite_nf.f_ipi,t_produtos.v_desenho from t_ite_nf,t_produtos where t_ite_nf.v_codproduto=t_produtos.v_codproduto and t_ite_nf.i_ordem=357";                     
          PreparedStatement prepStmt = con.prepareStatement(selectStatement);             
          ResultSet rs = prepStmt.executeQuery();
            
         while (rs.next())
          {
            
            ItemsNota items = new ItemsNota(); 
      //      items.cod_produto=rs.getString("v_codproduto");
            items.desc_produto=rs.getString("v_descricao");				
      /*    items.desc_produto=rs.getString("v_descricao");              
			items.unidade=rs.getString("v_unidade");
			items.qtd_produto=Float.toString(rs.getFloat("f_quantidade"));
			items.val_unitario=Float.toString(rs.getFloat("f_unitario"));
			items.val_total=Float.toString(rs.getFloat("f_val_total"));
			items.icm=Float.toString(rs.getFloat("f_icm"));
			items.ipi=Float.toString(rs.getFloat("f_ipi"));*/

            dados.add(items);
          }
          
          rs.close();
          prepStmt.close();
        }
      catch(SQLException ex) 
        {
           f = new String(ex.getMessage());
        }                       
    
    Collections.sort(dados);
    return dados;

}

String selectStatement = "select v_codproduto,v_descricao from t_ite_nf where i_ordem=357"; // "select t_ite_nf.i_ordem,t_ite_nf.v_codproduto,t_ite_nf.v_descricao,t_ite_nf.v_unidade,t_ite_nf.f_quantidade,t_ite_nf.f_unitario,t_ite_nf.f_val_total,t_ite_nf.f_icm,t_ite_nf.f_ipi,t_produtos.v_desenho from t_ite_nf,t_produtos where t_ite_nf.v_codproduto=t_produtos.v_codproduto and t_ite_nf.i_ordem=357"; PreparedStatement prepStmt = con.prepareStatement(selectStatement); ResultSet rs = prepStmt.executeQuery();

Acho que vc esta usando o preparedstatement de maneira errada. Use seguindo mais ou menos seguindo o exemplo abaixo.

String strSQL = "select * from tabela where campo = ?"
PreparedStatement pstmt = con.prepareStatement(strSQL); 
		pstmt.setInt(1, argumento_para_campo);
		pstmt.executeUpdate();

ate mais…

O que está dando problema é no segundo looping quando a classe item e adicionada a ArrayList, já coloquei a classe fora do looping para ser instâciada antes, mas o mesmo erro continuou.

em que linha de código da o erro?? posta o trace ai para nois :slight_smile:

java.lang.ClassCastException
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at NotaFiscalDynaplast.retornaDados2(NotaFiscalDynaplast.java:346)
at NotaFiscalDynaplast.impressao(NotaFiscalDynaplast.java:137)
at NotaFiscalDynaplast.init(NotaFiscalDynaplast.java:78)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
)

tente criar os metodos getters e setters para a sua classe e principalmente o metodo hashCode
deve resolver o problema :slight_smile:

Foi burrice mas é errando que se aprende,

tinha a seguinte linha

Collections.sort(dados);

esse era o erro…

valew