- 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.<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;
}
}
}[/code]