Ajuda em consulta!

6 respostas
E
  • Consulta onde é informado o nome do cargo em que é retornado o numero dele .
public int consultar(String nomeCargo)  throws SQLException {

		int numero_Tipo_Cargo = 0 ;
		
		PreparedStatement prepStatement = null;
		
		ResultSet rs = null;
		
String query = " SELECT NUMERO_CARGO FROM TIPO_CARGO WHERE TRIM(DESCRICAO_TIPO_CARGO) = ? ";

		try {
			
			
			Connection conexao = Conexao.abrirConexao();

			prepStatement = conexao.prepareStatement(query);

			prepStatement.setString(1, nomeCargo);

			rs = prepStatement.executeQuery();

			while (rs.next()) {
                  
                      numero_Tipo_Cargo = rs.getInt("NUMERO_CARGO");
				
			}// fim do while
			
			rs.close();
			
			conexao.close(); // finaliza a conexão com o banco
		
 System.out.println("* Consulta REALIZADA COM SUCESSO..    *");
			
		} catch (SQLException e) {
		
			throw new SQLException(e.getMessage());
		
		}

		   return numero_Tipo_Cargo ;
	
	}//fim do metodo consultar
  • Consulta onde é informado o numero do status do cargo em que é retornado a descricao dele .
public String consultar(int num_status_cargo) throws SQLException {
		
		String desc_status_cargo = "";
		PreparedStatement prepStatement = null;
		ResultSet rs = null;
		String query = " SELECT STATUS_CARGO FROM  STATUS_CARGO WHERE NUM_STATUS_CARGO = ?";
		
		try
		{
		
	    	Connection conexao = Conexao.abrirConexao(); 
		
		    prepStatement = conexao.prepareStatement(query);

		    prepStatement.setInt(1, num_status_cargo);

            System.out.println(num_status_cargo);		    
		    
		    rs = prepStatement.executeQuery();

		    while (rs.next()) {

			       desc_status_cargo = rs.getString("DES_STATUS_CARGO");
                   System.out.println("Status do cargo - " + desc_status_cargo + "\n");
		           
		    }// fim do while
		
		        rs.close();

		        conexao.close(); // finaliza a conexão com o banco
		
		      System.out.println("* Consulta Realizada *"); 
		   
		   
		} catch (SQLException e) {
		
			throw new SQLException(e.getMessage());
		
		}
		
		     return desc_status_cargo ;

	}

Consulta principal onde eu chamo as outras sua consultas a cima !!!

while (rs.next())  {
		
   voCargo = new VOCargo();
   voCargo.setQtdVagasOcupadas(rs.getInt("VAGAS_OCUPADAS"));
   voCargo.setQtdTotalVagasFix(rs.getInt("VAGAS_FIX"));
   voCargo.setDesAtribuicoes(rs.getString("ATRIBUICOES"));
   voCargo.setVlrVencimento(rs.getFloat("VENCIMENTO"));
   voCargo.setCodCargo(rs.getString("CODIGO"));
   voCargo.setDesCargo(rs.getString("DES_CARGO"));
   voCargo.setNumTipoCargo(rs.getInt("NUM_TIPO_CARGO"));
   voCargo.setDesTipoCargo( 

DAOConsultar.consultar_descricao_Tipo_do_Cargo(voCargo.getNumTipoCargo()) );
  voCargo.setNumStatusCargo(rs.getInt("NUM_STATUS_CARGO"));

  voCargo.setDesStatusCargo(        DAOConsultar.getInstancia().consultar_status_do_cargo(voCargo.getNumStatusCargo()));
   				
   colecao.add(voCargo);

}

O problema é que ele nao consegue realizar as duas consultas ao mesmo tempo dentro da consulta principal !!!

Ex.: se eu dexar uma das consultas internas com barra “//” funciona normalmente . Mas se eu deixar as duas nao funciona sendo que nao da erro nenhum !!

6 Respostas

J

Manda o codigo dessa classe Conexao aí!

E
package br.gov.am.tce.sap.dao ;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



public class Conexao {
	
private static final String url = "jdbc:oracle:thin:@160.162.1.2:1521:XE";
	private static final String driver = "oracle.jdbc.driver.OracleDriver"; 
	private static final String usuario = "teste";
	private static final String senha ="teste";
    
	
	
	
	public static Connection abrirConexao() throws SQLException
	{
		try 
		{
		   	  Class.forName(driver);
			  return DriverManager.getConnection(url,usuario,senha);
			  
		} 
		catch (ClassNotFoundException e) 
		{
			System.out.print(" Problema na Conexao com Banco de Dados !!");
			throw new SQLException(e.getMessage());
		}
		
		  
	}
	
	
}//fim da classe

A conexao ta funcionando normalmente !!

E
voCargo.setNumTipoCargo(rs.getInt("NUM_TIPO_CARGO"));  
voCargo.setDesTipoCargo(DAOConsultar.consultar_descricao_Tipo_do_Cargo(voCargo.getNumTipoCargo()) );

- Eu seto na vo o numero do tipo do cargo e depois  passo a vo como parametro para que seja realizada a consulta que retorna a descricao do cargo
voCargo.setNumStatusCargo(rs.getInt("NUM_STATUS_CARGO"));
voCargo.setDesStatusCargo(DAOConsultar.consultar_status_do_cargo(voCargo.getNumStatusCargo()) );

- Eu seto na vo o numero do status do cargo e depois  passo a vo como parametro para que seja realizada a consulta que retorna o status do cargo

Obs.: O engraçado é que se eu der barra “//” em um dos DAO a consulta é realizada normalmente . Mas se dexo as duas consultas para serem realizadas nao funciona !!! :sad:

D

tente fazer uma classe conexao que crie a conexao somente uma vez… e a utilize ate q alguem mande fechala (no final de todas as consultas)…

E

Como assim !?

Vc pode me dar algum exemplo de como fazer isto ?
8O

Agradeço !!!

D

aki vai...

import java.sql.Connection;
import java.sql.SQLException;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * Esta classe manipula a conexão com o banco de dados.<br>
 * É capaz de criar, retornar e fechar uma conexão.
 * Também possui métodos para manipulação de erros ocorridos.
 * 
 * @author Denis Santos
 * @author Hilton Menezes
 */

public class Conexao {
	
   /*
    * O driver utilizado para se conectar ao banco de dados.
    */
    private String driver;

	/*
	 * A instância que guarda a conexão com o banco de dados.
	 */
	private Connection con;

	/*
	 * O endereço do servidor do banco de dados
	 */
	private String servidor;

	/*
	 * O nome do banco de dados.
	 */
	private String BD;

	/*
	 * O nome do usuário que será utilizado para acesso
	 * ao banco de dados.
	 */
	private String username;

	/*
	 * A senha do usuário utilizado para acesso ao banco de dados
	 */
	private String password;
	
	/*
	 * Indica se está conectado ao banco.
	 */
    private boolean connected;
    
    /*
     * Mensagem de erro da última exceção disparada.
     */
    private String lasterror;
    
    /*
     * A endeço de acesso ao banco de dados.
     */
    private String url;
    
    /*
     * A última exceção disparada.
     */
    private Exception exception;

    /**
     * Construtor.<br>
     * Carrega as configurações do banco de dados.
     */
    public Conexao() {
        super();
    }
    
   /**
	* Retorna o nome de usuário do usuário utilizado para acesso ao banco de dados.
	*
	* @return o nome de usuário do usuário.
	*/
	public String getUsername() {
		return this.username;
	}

	/**
	 * Ajusta o nome do usuário utilizado para acesso ao banco de dados.
	 * 
	 * @param username o nome do usuário.
	 */
	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * Retorna o nome do banco de dados utilizado.
	 * 
	 * @return o nome do banco de dados.
	 */
	public String getBD() {
		return this.BD;
	}

	/**
	 * Ajusta o nome do banco de dados utilizado.
	 * 
	 * @param nome o nome do banco de dados.
	 */
	public void setBD(String bd) {
		this.BD = bd;
	}

	/**
	 * Retorna a senha do usuário utilizado para acesso ao banco de dados.
	 * 
	 * @return a senha do usuário utilizado para acesso ao banco.
	 */
	public String getPassword() {
		return this.password;
	}

	/**
	 * Ajusta a senha do usuário utilizado para acesso ao banco de dados.
	 * 
	 * @param senha o valor da senha.
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * Retorna o endereço do servidor de banco de dados.
	 * 
	 * @return o endereço do servidor.
	 */
	public String getServidor() {
		return this.servidor;
	}

	/**
	 * Ajusta o endereço do servidor de banco de dados.
	 * 
	 * @param servidor o endereço do servidor.
	 */
	public void setServidor(String servidor) {
		this.servidor = servidor;
	}
	
	/**
	 * Retorna a mensagem de erro da última exceção disparada.
	 *
	 * @return a última mensagem de erro.
	 */
	public String getLastError() {
        return lasterror;
    }

	/**
	 * Retorna se está conectado ao banco de dados.
	 *
	 * @return <code>true</code> se estiver conectado e
	 *			<code>false</code> se não estiver.
	 */
    public boolean isConnected() {
        return connected;
    }
    
    /**
     * Retorna uma conexão com o banco de dados.
     *
     * @return uma conexão com o banco de dados.
     */
    public Connection getConnection() {
        if (connected) 
            return con;
        else {
            doConnection();
            
            return con;
        }
    }
    
    /**
     * Cria e retorna uma conexão com o banco de dados.
     *
     * @return uma conexão com o banco de dados.
     */
    public Connection open() {
        doConnection();
        
        return con;
    }
    
    /**
     * Reconecta com o banco de dados.
     *
     * @return a nova conexão criada.
     */
    public Connection refresh() {
        close();
        
        return open();
    }
    
    /**
     * Fecha a conexão com o banco de dados.
     */
    public void close() {
        try {
            if (con != null) {
                con.close();
                
                connected = false;
                lasterror = "";
            }
        }
        catch (SQLException e) {
            lasterror = e.getMessage();
            exception = e;
        }
    }
    
    /**
     * Realiza a conexão com o banco de dados.
     */
    public void doConnection() {        
        try{
            MysqlDataSource ds = new MysqlDataSource();
            ds.setDatabaseName(getBD());
            ds.setUser(getUsername());
            ds.setPassword(getPassword());
            ds.setServerName(getServidor());
            con = ds.getConnection();
            connected = true;
        }catch(Exception e){
            e.printStackTrace();
            lasterror = e.toString();
            exception = e;
            
        }   
    }   
    
}
Criado 26 de junho de 2006
Ultima resposta 28 de jun. de 2006
Respostas 6
Participantes 3