Problema com Select

4 respostas
Diego_Adriano

Boa tarde galera, estou com um problema em um progrma …
Bem, eu tenho uma classe Tela, nessa classe o Usuario insere o ID e solicita uma pesquisa.
O que estou fazendo é pegando esse ID e passando ele a outra classe, classe essa que é responsavel pela consulta no BD, estou comp problemas na hora de devolver a consulta a classe Tela e imprimir isso nos TextFields. A grande questão é que envio um INT ao metodo entao como receber um ARRAY de volta ?? Não sei se essa seria a forma mais correta …
Se alguem puder mu ajudar agradeço

CId = consulta.ConsultaCliente(Integer.parseInt(texto_Id.getText()));

A cima estou enviando o ID ao metodo para fazer a consulta

A baixo a classe e o Metodo que recebe o ID, estou com muita duvida de como efetuar o retorno dos dados …

import java.awt.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.swing.JOptionPane;


@SuppressWarnings({ "serial", "unused" })
public class BDConsultaCliente extends ConsultaCliente{

	Statement stm;
	String SQL;
	public String nome;
	int aux;
	
	public BDConsultaCliente(){
		
		try {
			//CONEXÃO COM O BANCO							 
				String url     = "jdbc:odbc:Academia";//URL CAMINHO ONDE ESTA O BANCO
				String usuario = "";
				String senha   = "";
				Class.forName  ( "sun.jdbc.odbc.JdbcOdbcDriver" );//NOME DO DRIVER
				Connection con;
				con = DriverManager.getConnection(url,usuario,senha);

					JOptionPane.showMessageDialog(null,"Conexãoestabelecida",
							"Gerenciador Fitness",JOptionPane.INFORMATION_MESSAGE);

				
								stm = con.createStatement();//CRIANDO A CONEXAO
								
		
				

		
	}
	
		catch(Exception event)
				  {
						JOptionPane.showMessageDialog(null,"Conexão não estabelecida",
								"Gerenciador Fitness",JOptionPane.ERROR_MESSAGE);
				  }

              		
						

		
	}
	
	
	
	
	public int ConsultaCliente(int CId) throws SQLException {
		// TODO Auto-generated method stub
		
		
		ResultSet rs = stm.executeQuery("Select ID, NOME from Cadastro Where ID=" + CId );
	    
		while(rs.next()){
	    
	    //PENSEI EM ARMAZENAR ESSE BLOCO EM UM ARRAY E DEVOLVER A CLASSE TELA E LA EFETUAR A LEITURA E 
            //DISTRIBUIR OS DADOS
          
	    /*		rs.getString("NOME");
	    		rs.getString("SOBRENOME");
	    		rs.getString("END");
	    		rs.getInt   ("NUM");
	    		rs.getString("CIDADE");
	    		rs.getString("ESTADO");
	    		rs.getString("CEP");
	    		rs.getString("NASCIMENTO");
	    		rs.getString("RG");
	    		rs.getString("CPF");
	    		
	    	*/
			aux = rs.getInt("ID");//APENAS EFETUEI UM TESTE PARA SABER SE O SELECT ESTA OK
			nome = rs.getString("NOME");
	    	}
	    		stm.close();
	    		JOptionPane.showMessageDialog(null,""+ aux + ""+nome);
	    		
	    		
	    		if ( aux == 0 ){
		
	    			return 0;
		}
			else{
		
				return CId;
		}			
	
	    		
	}

}

4 Respostas

F

hmm cara… o legal é vc ter um classe VO com os dados que vc vai retornar da consulta…

ai vc retorna o ObjetoVO… ou se vc retornar mais de 1… um array dos objetosVO…

Diego_Adriano

Então … meu professor tb disse isso … e eu ja havia pensando em criar um Array … mas fiquei na duvida de como criar isso …
vc teria algum exemplo ??

F

seguindo o seu exemplo…

public class pessoaVO{
                 String nome;
                 String sobrenome;
                 String endereco; 
                 int numero;
                 String cidade;
                 String estado;
                 String cep;
                 String dataNascimento;
                 String rg; 
                 String cpf;
getters and setters para os atributos...

}
public PessoaVO ConsultaCliente(int CId) throws SQLException {  
         // TODO Auto-generated method stub  
           
           
         ResultSet rs = stm.executeQuery("Select ID, NOME from Cadastro Where ID=" + CId );  
          PessoaVO pessoaVO = new PessoaVO():
         while(rs.next()){  
           
         //PENSEI EM ARMAZENAR ESSE BLOCO EM UM ARRAY E DEVOLVER A CLASSE TELA E LA EFETUAR A LEITURA E   
             //DISTRIBUIR OS DADOS  
             
                 pessoaVO.setNome(rs.getString("NOME")); 
/* seguir o exemplo do nome para os outros
                 rs.getString("SOBRENOME"); 
                 rs.getString("END"); 
                 rs.getInt   ("NUM"); 
                 rs.getString("CIDADE"); 
                 rs.getString("ESTADO"); 
                 rs.getString("CEP"); 
                 rs.getString("NASCIMENTO"); 
                 rs.getString("RG"); 
                 rs.getString("CPF"); 
                  
             */  

             }  
                 stm.close();  
               
                return pessoaVO;   
                   

           
          
       
       
                   
     }

eu to meio sem tempo… mas fica mais ou menos isso ae…

se não conseguiu entender assim que der um tempo eu detalho mais…

procura na net pelo Designer Pattern DAO VO…

xjunior

mano, usa PreparedStatament ao invés de Statament, ok?

olha um exemplo interessante que postei com uma estrutura de conexão:
http://www.guj.com.br/posts/list/148642.java#804938

Criado 10 de fevereiro de 2010
Ultima resposta 10 de fev. de 2010
Respostas 4
Participantes 3