Olá,
Sou iniciante e estou tendo problemas para popular um datagrid, utilizando dados do banco, já tentei de várias maneiras mas não dá certo, nesse código abaixo, estou tentando fazer de duas formas diferentes,
<mx:RemoteObject id ="DAOVaga" destination="DAOVaga">
<mx:method name="buscarVaga" result="mostrarVagas(event)"/>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import mx.collections.ArrayCollection;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.rpc.events.ResultEvent;
import dominio.ProfissionalVO;
[Bindable]
private var vagas:ArrayCollection = new ArrayCollection();
public function pesquisarVaga(evt:MouseEvent): void {
DAOVaga.buscarVaga;
}
public function mostrarVagas(evt:ResultEvent):void {
vagas = evt.result as ArrayCollection;
}
private var profissionais:ArrayCollection = new ArrayCollection();
public function pesquisarProfissionais(evt:MouseEvent) : void {
var controladoraProfissional:RemoteObject;
controladoraProfissional = new RemoteObject("controladoraProfissional");
controladoraProfissional.buscar();
}
private function mostrarProfissionais(evt:ResultEvent):void{
if (evt.result != null){
profissionais = (evt.result as ArrayCollection);
}
}
]]>
<mx:DataGrid x="0" y="0" height="388" width="645" fontSize="12" dataProvider="(vagas)" id="dgVagas" enabled="true" editable="false">
<mx:columns>
<mx:DataGridColumn headerText="Data" dataField="dataVaga" width="55"/>
<mx:DataGridColumn headerText="Código" dataField="id"width="58"/>
<mx:DataGridColumn headerText="Tipo" dataField="tipo" width="110"/>
<mx:DataGridColumn headerText="Descricao" dataField="descricao"/>
<mx:DataGridColumn headerText="Empresa" dataField="empresa" width="110"/>
<mx:DataGridColumn headerText="Salário" dataField="salario" width="68"/>
</mx:columns>
</mx:DataGrid>
<mx:DataGrid x="0" y="0" width="645" height="388" id="dgProfissionais" dataProvider="profissionais" editable="false" enabled="true">
<mx:columns>
<mx:DataGridColumn headerText="Nome" dataField="nome" width="120"/>
<mx:DataGridColumn headerText="Sobrenome" dataField="sobrenome" width="220"/>
<mx:DataGridColumn headerText="Sexo" dataField="sexo" width="75"/>
<mx:DataGridColumn headerText="Idade" dataField="idade" width="60"/>
<mx:DataGridColumn headerText="Profissão" dataField="profissao"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Pesquisar" fontSize="13" fontFamily="Arial" cornerRadius="7" y="297" x="486" id="btBuscarVagas" click="pesquisarVagas(event);currentState='stateVagas'"/>
<mx:Button label="Pesquisar" fontSize="13" fontFamily="Arial" cornerRadius="7" x="486" y="297" id="btBuscarProfissionais"
click="pesquisarProfissionais(event);currentState='stateProfissionais'"/>
Classe que espelha modelo java(atributos e métodos)
package dominio
{
[RemoteClass(alias="modelo.Vaga")]
[Bindable]
public class VagasVO
{
public function VagasVO()
{
}
public var tipo:String;
public var cargo:String;
public var descricao:String;
public var dataVaga:String;
public var salario:String;
}
}
Minha classe controladora vagas
package control;
import exception.ImpossivelCompletarTarefaException;
import modelo.Vaga;
import negocio.FachadaVaga;
public class ControladoraVaga {
public void inserir(Vaga vaga){
FachadaVaga fachadaVaga = new FachadaVaga();
try {
fachadaVaga.inserirVaga(vaga);
} catch (ImpossivelCompletarTarefaException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unused")
private void atualizar(Vaga vaga){
FachadaVaga fachadaVaga = new FachadaVaga();
try{
fachadaVaga.atualizarVaga(vaga);
} catch(ImpossivelCompletarTarefaException e){
}
}
public void excluir(Vaga vaga){
FachadaVaga fachadaEmpresa = new FachadaVaga();
try{
fachadaEmpresa.excluirVaga(vaga);
} catch(ImpossivelCompletarTarefaException e){
e.printStackTrace();
}
}
public void buscar(int id){
FachadaVaga fachadaVaga = new FachadaVaga();
try{
fachadaVaga.buscarVaga(id);
} catch(ImpossivelCompletarTarefaException e){
e.printStackTrace();
}
}
}
Meu DAOVaga
package persistencia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import modelo.Vaga;
public class DAOVaga {
private Connection conexao;
private void obterConexao(){
try {
Class.forName("com.mysql.jdbc.Driver");
conexao = DriverManager.getConnection("jdbc:mysql://localhost/sirp", "root", "123");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void liberarConexao(){
try {
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void inserir(Vaga vaga){
obterConexao();
try {
PreparedStatement pstat = conexao.prepareStatement("INSERT INTO Vaga (tipo, cargo, experienciaExigida, descricao, dataVaga, salario) VALUES (?, ?, ?, ?, ?, ?)");
pstat.setInt(1, vaga.getId());
pstat.setString(2, vaga.getTipo());
pstat.setString(3, vaga.getCargo());
pstat.setString(4, vaga.getExperienciaExigida());
pstat.setString(5, vaga.getDescricao());
pstat.setString(6, vaga.getDataVaga());
pstat.setString(7, vaga.getSalario());
pstat.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
}
public void atualizar(Vaga vaga){
obterConexao();
try {
PreparedStatement stat = conexao.prepareStatement("UPDATE Vaga SET tipo = ?, cargo = ?, experienciaExigida = ?, descricao = ?, dataVaga = ?, salario = ? WHERE id = ? ");
stat.setInt(1, vaga.getId());
stat.setString(2, vaga.getTipo());
stat.setString(3, vaga.getCargo());
stat.setString(4, vaga.getExperienciaExigida());
stat.setString(5, vaga.getDescricao());
stat.setString(6, vaga.getDataVaga());
stat.setString(7, vaga.getSalario());
stat.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
}
public void excluir(Vaga vaga){
obterConexao();
try {
Statement stat = conexao.createStatement();
stat.executeUpdate("DELETE FROM Vaga WHERE id = '" + vaga.getId() + "' ");
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
}
public Vaga buscarVaga(int i){
obterConexao();
try {
PreparedStatement stat = conexao.prepareStatement("SELECT * FROM Vaga WHERE id = ?");
stat.setInt(1, i);
ResultSet set = stat.executeQuery();
if (set.next()){
Vaga vaga = new Vaga();
vaga.setId(set.getInt("id"));
vaga.setTipo(set.getString("tipo"));
vaga.setCargo(set.getString("cargo"));
vaga.setDescricao(set.getString("descricao"));
vaga.setExperienciaExigida(set.getString("experienciaExigida"));
vaga.setDataVaga(set.getString("dataVaga"));
vaga.setSalario(set.getString("salario"));
stat = conexao.prepareStatement("SELECT count(*) FROM Vaga WHERE vaga_fk = ?");
stat.setInt(1, i);
set = stat.executeQuery();
return vaga;
}
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
return null;
}
}
Quando eu aperto o botão pesquisar, não acontece nada, nem muda de estado, no segundo click fica branco o panel, não consigo pesquisar vaga e nem profissionais
Agora o meu outro problema é o Login, esse eu tô mais perdido ainda
Até agora eu fiz isso
package control;
import exception.ImpossivelCompletarTarefaException;
import modelo.Login;
import negocio.FachadaLogin;
public class ControladoraLogin {
public void logar(Login login){
FachadaLogin fachadaLogin = new FachadaLogin();
try {
if (fachadaLogin.ValidarLogin(login)==true);
//O que eu coloco aqui ?????
} catch (ImpossivelCompletarTarefaException e) {
e.printStackTrace();
}
}
}
package dominio
{
[RemoteClass(alias="modelo.Login")]
[Bindable]
public class LoginVO
{
public function LoginVO()
{
}
public var login:String;
public var senha:String;
public var nivel:String;
}
}
package control;
import flex.messaging.FlexContext;
import flex.messaging.FlexSession;
import javax.servlet.http.*;
public class SessionCorrente {
HttpServletRequest request;
public FlexSession session;
public SessionCorrente() {
request = FlexContext.getHttpRequest();
session = FlexContext.getFlexSession();
}
public String getSessionId() throws Exception {
String s = new String();
s = (String) session.getId();
return s;
}
public String getHeader(String h) throws Exception {
String s = new String();
s = (String) request.getHeader(h);
return h + "=" + s;
}
}
package persistencia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import modelo.Login;
public class DAOLogin {
private Connection conexao;
private void obterConexao(){
try {
Class.forName("com.mysql.jdbc.Driver");
conexao = DriverManager.getConnection("jdbc:mysql://localhost/sirp", "root", "123");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void liberarConexao(){
try {
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void inserir(Login login){
obterConexao();
try {
PreparedStatement pstat = conexao.prepareStatement("INSERT Login (usuario, senha, nivel) VALUES (?, ?, ?)");
pstat.setString(1, login.getLogin());
pstat.setString(2, login.getSenha());
pstat.setString(3, login.getNivel());
pstat.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
}
public void atualizar(Login login){
obterConexao();
try {
PreparedStatement stat = conexao.prepareStatement("UPDATE Profissional SET nome = ?, sobrenome = ?, sexo = ?, idade = ?, dataNascimento = ?, estadoCivil = ?, profissao = ?, estudante = ?, fumante = ?, filhos = ?, moro = ?, hobby = ?, descricao = ?, telefoneCelular = ?, telefoneComercial = ?, telefoneResidencial = ?, webSite = ? WHERE email = ? ");
stat.setString(1, login.getLogin());
stat.setString(2, login.getSenha());
stat.setString(3, login.getNivel());
stat.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
}
public Login buscarLogin(String usuario, String senha){
obterConexao();
try {
PreparedStatement stat = conexao.prepareStatement("SELECT * FROM Login WHERE usuario = ? and senha = ?");
stat.setString(1, usuario);
stat.setString(2, senha);
ResultSet set = stat.executeQuery();
if (set.next()){
Login login = new Login();
login.setLogin(set.getString("login"));
login.setSenha(set.getString("senha"));
login.setNivel(set.getString("nivel"));
return login;
}
} catch (SQLException e) {
e.printStackTrace();
}
liberarConexao();
return null;
}
}
Apesar de ter já feito isso, acredito que tem bastante coisa errada, principalmente no dao e controladora, e não sei como continuar daqui para frente, como criar um método login e fazer a sessão, principalmente na parte do flex, se alguém pode me dar uma luz
O tópico ficou meio grandinho, mas eu tô começando agora na raça, eu tenho que entregar esse projeto amanhã ou sexta na faculdade, ainda bem que data da entrega foi prorrogada umas duas vezes, porque tô bem enrolado
Obrigado desde já.

