Lógica + Sql

7 respostas
marcospaulo.suporte
Pessoal, montei um sistema pra impressão de umas etiquetas de produtos, e estou com uma duvida. Meu código é.:
if (!tf_produto.getText().equals("")) {
       try { 
                String sql = "SELECT pigid,prdcod,prdpor FROM PRD_ALM_PIGMENTOS where prdcod ='"+tf_produto.getText()+"'";
                conecta_pigmento.executeSQL(sql);
                conecta_pigmento.resultset.first();

                String porcentagem = conecta_pigmento.resultset.getString("prdpor");
                
                System.out.println("Porcentagem a serem listadas.: "+porcentagem);
                //jcb_porcentagem.addItem(porcentagem);
            } catch (SQLException ex) {
                Logger.getLogger(ALMOXARIFADO_PIGMENTO.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
else{    
 System.out.println("Sem produto digitado");
}

Por exemplo: o retorno DO 'SQL' seria (produto 0217061).
6 0217061 4% - 500 grs
30 0217061 2% - 250 grs

mas ele só mostra .:
Porcetagem a serem listadas.: 4% - 500 grs
Porcetagem a serem listadas.: 4% - 500 grs

Sim, pq ele está pegando o codigo do produto e nao do ID, a minha duvida é? como posso fazer com ele me mostre os dois.:
Porcetagem a serem listadas.: 4% - 500 grs
Porcetagem a serem listadas.: 2% - 250 grs

vlw pessoal!

7 Respostas

lina

Oi,

Percorra o ResultSet.

Tchauzin!

edu_fernandes

Se bem entendi você quer trazer o id e o código correto?

Se for esse o caso, como você realizou um select trazendo o código, produto e a porcentagem. Faça o mesmo que fez com o resultset de porcentagem e atribua ao codigo e id.

int id = conecta_pigmento.resultset.getInt("prdcod");

O codigo vc apenas reaproveita desta tua String ae tf_produto.getText().

Caso não conheça procure sobre o método PreparedStatement, se quiser fazer tudo na ‘unha’. O código se torna mais seguro, legivel e facil de trabalhar.

Espero que possa ter ajudado.

Sem mais.

rmendes08

Por tudo de que há mais sagrado nesse mundo. Nunca, absolutamente nunca passe parâmetros para o SQL através de concatenação de String’s para sistemas em produção. Isso abre uma brecha para um ataque conhecido como SQL Injection, e qualquer moleque hoje em dia baixa uma ferramenta esdrúxula para explorar essa falha.

marcospaulo.suporte
Amigos... Alterei o código pra essa forma.:
if (!tf_produto.getText().equals("")) {
       try { 
                String sql = "SELECT DISTINCT pigid,prdcod,prdpor FROM PRD_ALM_PIGMENTOS where prdcod ='"+tf_produto.getText()+"'";
                conecta_pigmento.executeSQL(sql);
                
                while (conecta_pigmento.resultset.next()){
                    porcentagem = conecta_pigmento.resultset.getString("prdpor");
                    jcb_porcentagem.addItem(porcentagem);
                }

            } catch (SQLException ex) {
                Logger.getLogger(ALMOXARIFADO_PIGMENTO.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
else{    
 System.out.println("Sem produto digitado");
}

Agora ele está me mostrando a porcentagem corretamente, o problema é que está duplicando os valores no JcomboBox, porque?

Vlw

marcospaulo.suporte

rmendes08,
Realmente!. Entendi o que vc quis dizer, mas poderia me ajudar como teria que fazer pra resolver esse problema?

Vlw

rmendes08

rmendes08,
Realmente!. Entendi o que vc quis dizer, mas poderia me ajudar como teria que fazer pra resolver esse problema?

Vlw

Você precisa usar um PreparedStatement para executar essa query. Na String da query, você coloca um “?” no lugar onde deve ir o parâmetro. No PreparedStatement você tem uma série de métodos setXXX(int, XXX), onde XXX é o tipo do parâmetro que você quer setar. Por exemplo:

PreparedStatement pstm = conn.prepareStatement("select * from cliente where nome like ?");

pstm.setString(1, "joao da silva");
marcospaulo.suporte

Entendi… vou mudar essa estrutura aki.

Muito obrigado pela dica ai!

Criado 14 de novembro de 2011
Ultima resposta 16 de nov. de 2011
Respostas 7
Participantes 4