seguinte tenho uma consulta por id_cliente, funciona tudo certo, quero fazer uma consulta com varios id do cliente tipo listar cliente com ID 1 2 3 4, tentei o seguinte sem exito
publicResultSetCONSULTA_Cod_ARRAY(ArrayListcod){Stringsql="SELECT * FROM Contato WHERE Código = ?";for(inti=0;i<cod.size();i++){if(cod.size()==i+1){sql=String.Concat(sql," ",Convert.ToString(cod[i]));}else{sql=String.Concat(sql,Convert.ToString(cod[i])," or Código= ");}try{PreparedStatementstmt=getConexao().prepareStatement(sql);stmt.setString(1,oquevaiaquiparaminhapesquiza????);ResultSetrs=stmt.executeQuery();return(rs);}catch(SQLExceptionsQLException){System.out.println("Erro ao listar Cliente");}returnnull;}
ai tenho a funcao que contem um arraylistc om os ID que eu quero listar alguem poderia me ajudar ???
Cara, se entendi bem, vc está precisando da cláusula IN do SQL.
Algo como:
SELECT*FROMContatoWHERECódigoIN(1,2,3)
Teste algo assim e diz se era o seu caso.
Falew.
fabiodurgante
isso mesmo, so que o problema eu tenho uma jtable com varias linhas da pesquiza entendeu ai eu seleciono a linha cada linha selecionada eu guardo o codigo em um arraylist vou guardando…
EX seleciono a linha 20 30 45 e guardo os codigos dessas linhas e quero fazer o select apartir dos codigos dessas linhas somente
esse select SELECT * FROM Contato WHERE Código IN (1,2,3) se fosse sempre o COD 1,2,3 ta beleza mas nao sei qual é o codifo como que passo o array list para esse select ???
SELECT * FROM Contato WHERE Código IN (ARRAYLIST cod)
UpTheIrons
Então, eu precisei disso qdo ainda programava em C# e SqlServer.
Eu tinha q selecionar categorias de produto para impressão, ao invés de “de 1 a 10” eu poderia escolher
“1, 5, 8” por ex, mas n passava um objeto array propriamente dito, eu passava como uma string, q na
verdade era um array :D.
Eu tenho q dá uma reolhada, mas a solução é por aí.
fabiodurgante
meu exemplo acima é feito em C# e funciona beleza porque no C# tu passa o sqldireto so monta o sql e passa e deu aqui no java nao é so passar o sql tem que passar o parametro para a pesquiza ai que ta o porblema
sorte q tem o netbeans fez pra min agora sim stmt.setArray(1, (Array) cod);
UpTheIrons
Falew, se funcionar dá um OK, pra eu saber se pelo menos hj fiz uma contribuiçãozinha *r
UpTheIrons
Vou bolar um teste aqui
fabiodurgante
essa porra da tando erro no arraylist
publicResultSetCONSULTA_Cod_ARRAY(ArrayListcod){cod.toArray();Stringsql="SELECT * FROM Contato WHERE Código = ?";for(inti=0;i<cod.size();i++){if(cod.size()==i+1){sql=(sql+" "+Integer.toString(cod[i])AQUIERRO);}else{sql=(sql+Integer.toString(cod[i])AQUIERRO+" or Código= ");}System.out.println(sql);}try{PreparedStatementstmt=getConexao().prepareStatement(sql);stmt.setArray(1,(Array)cod);ResultSetrs=stmt.executeQuery();return(rs);}catch(SQLExceptionsQLException){System.out.println("Erro ao listar Cliente");}returnnull;}
o erro array required but java.util.arraylist found
UpTheIrons
Cara, fiz um teste, e funfou!
Vc cria uma variável do tipo String, vai concatenando os valores selecionados e pimba!
Stringcods="155, 158";Connectionconn=Conexao.getConexao();Statementst=conn.createStatement();Stringcomando="SELECT * FROM CONTA WHERE conta_id IN ("+cods+")";ResultSetrs=st.executeQuery(comando);while(rs.next()){System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+String.valueOf(rs.getInt("versao")));}conn.close();}
Tenta assim.
fabiodurgante
de fato
privateClientegetSelecionadoCliente(){if(tabela.getSelectedRow()==-1){JOptionPane.showMessageDialog(this,"Selecione uma linha da tabela.","ERRO",JOptionPane.ERROR_MESSAGE);returnnull;}DefaultTableModelmodelo=(DefaultTableModel)tabela.getModel();Integerid=Integer.parseInt(modelo.getValueAt(tabela.getSelectedRow(),0).toString());System.out.println(id);ClienteDaocliente=newClienteDao();returncliente.Consultar(id);}
ai meu codigo que pega o codigo de 1 linha selecionada, se eu selecionar mais de 1 linha ele tem que concatenar os codigos teria alguma ajuda ???
o ID pega o codigo quando clica na linha da tabela
codigos = concat(Integer.toString(id)); tentei assim mas nao é concat isso é no C#
UpTheIrons
privateClientegetSelecionadoCliente(){Stringcods=null;if(tabela.getSelectedRow()==-1){JOptionPane.showMessageDialog(this,"Selecione uma linha da tabela.","ERRO",JOptionPane.ERROR_MESSAGE);returnnull;}DefaultTableModelmodelo=(DefaultTableModel)tabela.getModel();Integerid=Integer.parseInt(modelo.getValueAt(tabela.getSelectedRow(),0).toString());System.out.println(id);cods=cods+id.toString()+", ")ClienteDaocliente=newClienteDao();returncliente.Consultar(cods)
Algo mais ou menos assim (isso é Swing né?), eu n sei o comportamente do click, mas se for
a cada clicada uma selecionada, ele pode ir acumulando numa variável, dpois vc retira algum
caracter que sobre, como a última vírgula por ex.
O caminho é esse, eu to aqui apanhando do Flex, breve precisarei de algo como isto.
robertoMoraes
c vc quer selecionar a linha da tabela clicando
poderia por 1 action listener pa receber o id e jogar numa variavel c for varios id joga os valores num array dpois para fazer a conssulta faz 1 loop
a cada ciclo do loop retira 1 valor do array e joga numa variavel