Ajuda em consulta!

  • 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 !!

Manda o codigo dessa classe Conexao aí!

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 !!


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:

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)…

Como assim !?

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

Agradeço !!!

aki vai…

[code]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.&lt;br&gt;
 * Carrega as configurações do banco de dados.
 */
public Conexao&#40;&#41; &#123;
    super&#40;&#41;;
&#125;

/**
* 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&#40;String username&#41; &#123;
	this.username = username;
&#125;

/**
 * Retorna o nome do banco de dados utilizado.
 * 
 * @return o nome do banco de dados.
 */
public String getBD&#40;&#41; &#123;
	return this.BD;
&#125;

/**
 * Ajusta o nome do banco de dados utilizado.
 * 
 * @param nome o nome do banco de dados.
 */
public void setBD&#40;String bd&#41; &#123;
	this.BD = bd;
&#125;

/**
 * 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&#40;&#41; &#123;
	return this.password;
&#125;

/**
 * Ajusta a senha do usuário utilizado para acesso ao banco de dados.
 * 
 * @param senha o valor da senha.
 */
public void setPassword&#40;String password&#41; &#123;
	this.password = password;
&#125;

/**
 * Retorna o endereço do servidor de banco de dados.
 * 
 * @return o endereço do servidor.
 */
public String getServidor&#40;&#41; &#123;
	return this.servidor;
&#125;

/**
 * Ajusta o endereço do servidor de banco de dados.
 * 
 * @param servidor o endereço do servidor.
 */
public void setServidor&#40;String servidor&#41; &#123;
	this.servidor = servidor;
&#125;

/**
 * Retorna a mensagem de erro da última exceção disparada.
 *
 * @return a última mensagem de erro.
 */
public String getLastError&#40;&#41; &#123;
    return lasterror;
&#125;

/**
 * Retorna se está conectado ao banco de dados.
 *
 * @return &lt;code&gt;true&lt;/code&gt; se estiver conectado e
 *			&lt;code&gt;false&lt;/code&gt; se não estiver.
 */
public boolean isConnected&#40;&#41; &#123;
    return connected;
&#125;

/**
 * Retorna uma conexão com o banco de dados.
 *
 * @return uma conexão com o banco de dados.
 */
public Connection getConnection&#40;&#41; &#123;
    if &#40;connected&#41; 
        return con;
    else &#123;
        doConnection&#40;&#41;;
        
        return con;
    &#125;
&#125;

/**
 * Cria e retorna uma conexão com o banco de dados.
 *
 * @return uma conexão com o banco de dados.
 */
public Connection open&#40;&#41; &#123;
    doConnection&#40;&#41;;
    
    return con;
&#125;

/**
 * Reconecta com o banco de dados.
 *
 * @return a nova conexão criada.
 */
public Connection refresh&#40;&#41; &#123;
    close&#40;&#41;;
    
    return open&#40;&#41;;
&#125;

/**
 * Fecha a conexão com o banco de dados.
 */
public void close&#40;&#41; &#123;
    try &#123;
        if &#40;con != null&#41; &#123;
            con.close&#40;&#41;;
            
            connected = false;
            lasterror = &quot;&quot;;
        &#125;
    &#125;
    catch &#40;SQLException e&#41; &#123;
        lasterror = e.getMessage&#40;&#41;;
        exception = e;
    &#125;
&#125;

/**
 * Realiza a conexão com o banco de dados.
 */
public void doConnection&#40;&#41; &#123;        
    try&#123;
        MysqlDataSource ds = new MysqlDataSource&#40;&#41;;
        ds.setDatabaseName&#40;getBD&#40;&#41;&#41;;
        ds.setUser&#40;getUsername&#40;&#41;&#41;;
        ds.setPassword&#40;getPassword&#40;&#41;&#41;;
        ds.setServerName&#40;getServidor&#40;&#41;&#41;;
        con = ds.getConnection&#40;&#41;;
        connected = true;
    &#125;catch&#40;Exception e&#41;&#123;
        e.printStackTrace&#40;&#41;;
        lasterror = e.toString&#40;&#41;;
        exception = e;
        
    &#125;   
&#125;   

}[/code]