Estou envolvido em um projeto onde estamos convertendo um sistema em php para java web!
Meu problema é o seguinte: me deparei com seguinte codigo:
$conn= mysql_connect('url', 'login', 'senha');
mysql_select_db ('banco');
$consulta = mysql_query("Select aplicacao, modulo, rotina from acessos where usuario like 'login'");
return $consulta
No java, esse consulta seria um resultset. Esse retorno e mandado para uma aplicacao flex que popula um datagrid. Acontece que o carregamento dos dados é feito como se o retorno fosse um tipo de tabela que armazena o nome do campo ( no caso , aplicacao, modulo e rotina ) e os valores lidos do banco. Ai o acesso e setado pelos nomes dos campos. Ex: caixa de texto ‘empresa’ recebe o campo ‘aplicacao’ do retorno.
Fui tentar fazer a mesma coisa no Java, mas não deu certo!
Alguem tem alguma ideia do q pode ser feito para obter-se o mesmo resultado??
Simples, crie um objeto com os campos e tipos que você precisa, use o resultset para popular esse objeto, criando uma lista de objetos desse tipo e o repasse para a tela Flex.
Sem querer abusar da sua boa vontade, voce poderia me dar um exemplo??
Guardar os valores do resultset e tranquilo… so nao sei como seria para guardar os campos… =/
Sem querer abusar da sua boa vontade, voce poderia me dar um exemplo??
Guardar os valores do resultset e tranquilo… so nao sei como seria para guardar os campos… =/
Abraçooo[/quote]
Claro.
Talvez eu também não tenha sido claro.
Vamos lá!
[code]public class SeuDao {
//considere rs = resultset ja populado
List listSuaClasse = new ArrayList();
while(rs.next()) {
SuaClasse objeto = new SuaClasse();
objeto.setAplicacao(rs.getString(“aplicacao”));
//outros setters
listSuaClasse.add(objeto);
}
return listSuaClasse;
[/code]
Obviamente, foi um exemplo bem simples (estou no trabalho) e podes dar nomes mais significativos e coloquei tudo como String.
Podes adicionar o tipo correto. E logicamente, a classe SeuDao vai ter um método que faça o que lhe mostrei.
Edit: havia esquecido de adicionar o objeto a lista.
O dataField é que fica responsavel por preencher o datagrid. Quando retornasse o objeto, ele reconheceria quem é o campo aplicacao, modulo e rotina nesse objeto??
Então, lembro-me pouco do Flex e como ele acessa os valores de um objeto!
Veja exemplos na net de como ele faz isso, deve ter inúmeros.
Mas creio que o datafield tenha que ter obrigatoriamente o mesmo nome do seu campo, pois ele deve dar um get.
Ou seja, se disse que o datafield é aplicacao, seu objeto da lista deve ter um getAplicacao().
Estou supondo.
Não esqueça de dizer ao datagrid quem é sua lista.
Abraços.
Só mais uma coisinha: como se trata de um retorno, eu vo ter que setar o dataProvider do dataGrid pelo actionScript… qual o tipo que eu declaro a variavel do action script??
Dei uma olhada no link que vc mando… Achava que tinha feito a mesma coisa, mas nao deu certo ainda… =/
Classe Java :
public class Dados {
public String aplicacao;
public String modulo;
public String rotina;
public void setAplicacao(String a){
this.aplicacao = a;
}
public void setModulo(String m){
this.modulo = m;
}
public void setRotina(String r){
this.rotina = r;
}
public String getAplicacao(){
return this.aplicacao;
}
public String getModulo(){
return this.modulo;
}
public String getRotina(){
return this.rotina;
}
}
Metodo Java para preencher o List:
List<Dados> listaDados = new ArrayList<Dados>();
while(result.next()){
Dados d = new Dados();
d.setAplicacao(result.getString("aplicacao"));
d.setModulo(result.getString("modulo"));
listaDados.add(d);
}
return listaDados;
private function init():void
{
customersDataService.TesteDados();
}
public function receivedCustomerRecords( event:ResultEvent ):void
{
customersGrid.dataProvider = new ArrayCollection( event.result as Array );
}
Ele retorna 3 objects direitin… mas os dados nao aparecem no grid!!
Ta tenso viu! Apanhando tanto pra fazer uma coisa taoo bobaa!!
:oops:
Pq se fosse uma variavel actionScript quando construisse a pagina e carregasse o grid, a variavel ainda estaria vazia… ou não?
de qualquer forma tentei alterar assim:
[Bindable]
public var Lista: ArrayCollection;
private function init():void
{
customersDataService.TesteDados();
}
public function receivedCustomerRecords( event:ResultEvent ):void
{
Lista = new ArrayCollection( event.result as Array );
}