Lógica + Sql

Pessoal, montei um sistema pra impressão de umas etiquetas de produtos, e estou com uma duvida.
Meu código é.:

[code]
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”);
}[/code]

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!

Oi,

Percorra o ResultSet.

Tchauzin!

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.

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.

Amigos… Alterei o código pra essa forma.:

[code]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”);
}[/code]

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

Vlw

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

Vlw

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

Vlw[/quote]

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");

Entendi… vou mudar essa estrutura aki.

Muito obrigado pela dica ai!