O problema é o seguinte. Eu quero calcular um total, inserindo em um campo, de que mesa quero fazer isso. Ele pega essa mesa, vai na tabela pedido, e pega qual o codigo do produto e a quantidade. Com o codigo do produto ele vai na tabela produto e pega o preco relacionado a esse codigo.
Eu fiz um loop enquanto tivesse registro e incrementava o total do pedido.
O codigo fonte esta aí embaixo.
O problema é quando ele chega na "reset =  statement.executeQuery(prec);", la perto do final. Ele so executa uma vez o do/while mesmo tendo 3 registros. E se eu colocar essa linha e as 3 abaixo dela como comentario, o programa passa pelos loops, tanto do for quanto do do/while todas as vezes.
Nao se pode, no mesmo ResultSet executar instrucoes diferentes???
Como eu faria para calcular esse total?
Obrigado
Andre
 
      Statement statement = conexao.createStatement();
      String codigo = "SELECT codproduto, quantidade FROM pedido WHERE mesa ='" + painel.mesa.getText() +"'";
 
      ResultSet rs = statement.executeQuery(codigo);
      rs.next();
      ResultSetMetaData rsmd = rs.getMetaData();
      int quantidade = 0, preco=1;
      String codproduto = "", prec;
      float total = 0;
      ResultSet reset;
      do
      {
        for (int i = 1; i <= rsmd.getColumnCount(); ++i)
        {
          switch (rsmd.getColumnType(i)) {
            case Types.VARCHAR:
                {
                  codproduto = rs.getString(i);
                }
              break;
            case Types.INTEGER:
                {
                  quantidade = rs.getInt(i);
                }
              break;
            default:
 
          }
 
        }
        prec = "SELECT preco FROM produto WHERE codproduto = '"+ codproduto +"'";
        reset =  statement.executeQuery(prec);
        reset.next();
        preco = reset.getInt(1);
        total = total + (preco * quantidade);
 
      }
      while ( rs.next());
 
      painel.total.setText(Float.toString(total));
 
      saida.setText("Total Calculado");
      saida.repaint();
 
      statement.close();
    }
    catch (SQLException sqlex) {
      sqlex.printStackTrace();
      saida.append( sqlex.toString());

Responder a