[RESOLVIDO] Erro DAO - Ajudem

Galera boa noite feliz 2013 a todos…!!!

Então ja comecei o ano com um erro aqui no meu código q não to conseguindo descobrir…

o erro é o seguinte…

13/01/01 22:50:19 	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:138)
13/01/01 22:50:19 	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
13/01/01 22:50:19 	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
13/01/01 22:50:19 	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
13/01/01 22:50:19 	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
13/01/01 22:50:19 	at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
13/01/01 22:50:19 	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1161)
13/01/01 22:50:19 	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3001)
13/01/01 22:50:19 	at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3074)
13/01/01 22:50:19 	at br.com.abaco.treinamento.java.noturno.passageiros.dao.PassageirosDao.cadastrarPassageiro(PassageirosDao.java:35)
13/01/01 22:50:19 	at br.com.abaco.treinamento.java.noturno.passageiros.be.PassageirosBe.cadastrarPassageiro(PassageirosBe.java:50)
13/01/01 22:50:19 	at br.com.abaco.treinamento.java.noturno.passageiros.servlet.CadastrarPassageiros.service(CadastrarPassageiros.java:39)
13/01/01 22:50:19 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
13/01/01 22:50:19 	at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
13/01/01 22:50:19 	at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
13/01/01 22:50:19 	at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
13/01/01 22:50:19 	at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
13/01/01 22:50:19 	at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221)
13/01/01 22:50:19 	at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122)
13/01/01 22:50:19 	at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111)
13/01/01 22:50:19 	at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
13/01/01 22:50:19 	at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234)
13/01/01 22:50:19 	at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29)
13/01/01 22:50:19 	at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879)
13/01/01 22:50:19 	at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
13/01/01 22:50:19 	at java.lang.Thread.run(Thread.java:619)

Minha classe DAO

public class PassageirosDao
{

	private Connection conexao = null;
	
	public PassageirosDao(Connection conexao)
	{
		this.conexao = conexao;
	}
	
	
	public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException
	{
		PreparedStatement ps = null;
		String sql = "INSERT INTO TB_PASSAGEIRO (CODIGO, NUMERO_VOO, ORIGEM, DESTINO, NOME_PASSAGEIRO, SOBRENOME_PASSAGEIRO, QUANTIDADE_MALAS, VALOR_PASSAGEM) VALUES (?,?,?,?,?,?,?,?)";
		ps= conexao.prepareStatement(sql);
		
		ps.setLong	(1, gerarSequence("SEQUENCE_PASSAGEIRO"));
		ps.setLong	(2, passageiroVo.getNumeroVoo());
	   ps.setString(3, passageiroVo.getOrigem());
	   ps.setString(4, passageiroVo.getDestino());
	   ps.setString(5, passageiroVo.getNomePassageiro());
	   ps.setString(6, passageiroVo.getSobrenome());
		ps.setLong	(7, passageiroVo.getQuantidadeMalas());
		ps.setDouble(8, passageiroVo.getValorPassagem());	
		ps.executeUpdate();
	}
	
	private long gerarSequence(String sequence) throws SQLException
	{
		PreparedStatement ps = null;
		ResultSet rs = null;
		long codigo = 0;
		String sql = "SELECT " + sequence + ".NEXTVAL AS CODIGO FROM DUAL";
		ps = conexao.prepareStatement(sql);
		rs = ps.executeQuery();
		if(rs.next())
		{
			codigo = rs.getLong("CODIGO");
		}
		return codigo;
	}	
}

Minha Classe BE

public class PassageirosBe
{

	private Connection conexao = null;
	
	public PassageirosBe() throws SQLException
	{
		abreConexao();
	}
	
	private void abreConexao() throws SQLException
	{
	   String usuario = "noturno";
	   String senha = "noturno";
	   String thinConn = "jdbc:oracle:thin:@localhost:1521:XE";
	   DriverManager.registerDriver(new OracleDriver());
	   conexao = DriverManager.getConnection(thinConn,usuario,senha);
	   conexao.setAutoCommit(false);
	}
	
	private void fechaConexao()
	{
	   try
	   {
	      if(conexao != null && !conexao.isClosed())
	   {
	      conexao.close();
	   }
	   }
	   catch (SQLException e)
	   {
	      e.printStackTrace();
	   }
	}
	
	public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException
	{
		PassageirosDao dao = new PassageirosDao(conexao);
		dao.cadastrarPassageiro(passageiroVo);
		conexao.commit();
	}
}

E a Servlet

public class CadastrarPassageiros extends HttpServlet
{
	private static final String CONTENT_TYPE = "text/html; charset=windows-1252";

	public void init(ServletConfig config) throws ServletException
	{
		super.init(config);
	}

	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		try
		{
		   PassageirosVo passageiros = new PassageirosVo();
		   String numeroVooString = request.getParameter("campo_numero_voo");
		   String origem = request.getParameter("campo_origem");
		   String destino = request.getParameter("campo_destino");
		   String nomePassageiro = request.getParameter("campo_nome");
		   String sobrenomePassageiro = request.getParameter("campo_sobrenome");
		   String quantidadeMalasString = request.getParameter("campo_quantidade_malas");
		   String valorPassagemString = request.getParameter("campo_valor_passagem");
		   
		   long numeroVoo = Long.parseLong(numeroVooString);
		   long quantidadeMalas = Long.parseLong(quantidadeMalasString);
		   double valorPassagem = Double.parseDouble(valorPassagemString);
		   
		   PassageirosBe be = new PassageirosBe();
			be.cadastrarPassageiro(passageiros);
		   
		   request.setAttribute("passageiroVo", passageiros);
		   request.setAttribute("msgSucesso", "Passageiro cadastrado com sucesso!");
		   
		   RequestDispatcher rd = request.getRequestDispatcher("/view/CadastrarPassageiro.jsp");
		   rd.forward(request, response);
		}
	   catch(Throwable e)
	   {
	      e.printStackTrace();
	   }  
	}
}

Na exceção que você postou, acho que faltou a parte mais importante, onde estoura o erro propriamente dito.

de qual classe?

de qual classe?[/quote]

Pois é, não sei, ficou faltando na exceção.

de qual classe?[/quote]

Pois é, não sei, ficou faltando na exceção.[/quote]

Visxi…ainda não aprendi Exception no curso…rs
mais blz…vlw a ajuda…!!!

Você colocou no forum apenas um pequeno pedaço do erro lançado pelo seu sistema. A parte importante do erro, onde podemos ver o que lançou a exceção não foi publicada por você. Só copie e cole a exceção novamente.

Isso é tudo que está no console de erros…

[code]C:\JAVA\JAVAEE\jdk\bin\javaw.exe -jar C:\JAVA\JDeveloper\j2ee\home\admin.jar ormi://192.168.1.40:23891 oc4jadmin **** -updateConfig
02/01/2013 00:03:21 oracle.wireless.its.ra.TelnetResourceAdapter stop
INFO: O Industrial Telnet Server foi interrompido com sucesso.
02/01/2013 00:03:21 com.oracle.corba.ee.impl.orb.ORBServerExtensionProviderImpl preInitApplicationServer
WARNING: ORB ignoring configuration changes. Restart OC4J to apply new ORB configuration.
Ready message received from Oc4jNotifier.
Embedded OC4J startup time: 9439 ms.

Target URL – http://192.168.1.40:8988/cadastro/view/CadastrarPassageiro.jsp
02/01/2013 00:03:27 oracle.wireless.its.ra.TelnetResourceAdapter run
INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso.
13/01/02 00:03:44 java.sql.SQLException: ORA-01400: não é possível inserir NULL em (“NOTURNO”.“TB_PASSAGEIRO”.“ORIGEM”)

13/01/02 00:03:44 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:138)
13/01/02 00:03:44 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:316)
13/01/02 00:03:44 at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:282)
13/01/02 00:03:44 at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:639)
13/01/02 00:03:44 at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:185)
13/01/02 00:03:44 at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:633)
13/01/02 00:03:44 at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1161)
13/01/02 00:03:44 at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3001)
13/01/02 00:03:44 at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3074)
13/01/02 00:03:44 at br.com.abaco.treinamento.java.noturno.passageiros.dao.PassageirosDao.cadastrarPassageiro(PassageirosDao.java:34)
13/01/02 00:03:44 at br.com.abaco.treinamento.java.noturno.passageiros.be.PassageirosBe.cadastrarPassageiro(PassageirosBe.java:50)
13/01/02 00:03:44 at br.com.abaco.treinamento.java.noturno.passageiros.servlet.CadastrarPassageiros.service(CadastrarPassageiros.java:39)
13/01/02 00:03:44 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
13/01/02 00:03:44 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
13/01/02 00:03:44 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
13/01/02 00:03:44 at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
13/01/02 00:03:44 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
13/01/02 00:03:44 at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221)
13/01/02 00:03:44 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122)
13/01/02 00:03:44 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111)
13/01/02 00:03:44 at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
13/01/02 00:03:44 at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234)
13/01/02 00:03:44 at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29)
13/01/02 00:03:44 at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879)
13/01/02 00:03:44 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
13/01/02 00:03:44 at java.lang.Thread.run(Thread.java:619)
[/code]

Agora sim, veja o problema aqui:INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso. 13/01/02 00:03:44 java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("NOTURNO"."TB_PASSAGEIRO"."ORIGEM")

Parece que você tem uma coluna no banco de dados que é “not null” e você está tentando inserir um valor “null” nessa coluna. A coluna parece ser a: ORIGEM

[quote=romarcio]Agora sim, veja o problema aqui:INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso. 13/01/02 00:03:44 java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("NOTURNO"."TB_PASSAGEIRO"."ORIGEM")

Parece que você tem uma coluna no banco de dados que é “not null” e você está tentando inserir um valor “null” nessa coluna. A coluna parece ser a: ORIGEM[/quote]

Então agora eu pequei o mesmo SQL, e passei dados nele, e executei pelo SQL Worksheet, e inseriu certinho no BD… :?

[quote=chivalski][quote=romarcio]Agora sim, veja o problema aqui:INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso. 13/01/02 00:03:44 java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("NOTURNO"."TB_PASSAGEIRO"."ORIGEM")

Parece que você tem uma coluna no banco de dados que é “not null” e você está tentando inserir um valor “null” nessa coluna. A coluna parece ser a: ORIGEM[/quote]

Então agora eu pequei o mesmo SQL, e passei dados nele, e executei pelo SQL Worksheet, e inseriu certinho no BD… :? [/quote]

Mas o problema não é o SQL o problema é que você está inserindo pelo java, o atributo origem como nulo.

Da uma olhada no momento do insert, nessa linha: ps.setString(3, passageiroVo.getOrigem()); Confere qual o valor de passageiroVo.getOrigem()
Coloca esse codigo:

.... ps.setLong (1, gerarSequence("SEQUENCE_PASSAGEIRO")); ps.setLong (2, passageiroVo.getNumeroVoo()); System.out.printl("Origem : " + passageiroVo.getOrigem()); // veja o valor que é retornado no console. ps.setString(3, passageiroVo.getOrigem()); ps.setString(4, passageiroVo.getDestino()); ps.setString(5, passageiroVo.getNomePassageiro()); ps.setString(6, passageiroVo.getSobrenome()); ps.setLong (7, passageiroVo.getQuantidadeMalas()); ps.setDouble(8, passageiroVo.getValorPassagem()); ps.executeUpdate();

[quote=romarcio][quote=chivalski][quote=romarcio]Agora sim, veja o problema aqui:INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso. 13/01/02 00:03:44 java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("NOTURNO"."TB_PASSAGEIRO"."ORIGEM")

Parece que você tem uma coluna no banco de dados que é “not null” e você está tentando inserir um valor “null” nessa coluna. A coluna parece ser a: ORIGEM[/quote]

Então agora eu pequei o mesmo SQL, e passei dados nele, e executei pelo SQL Worksheet, e inseriu certinho no BD… :? [/quote]

Mas o problema não é o SQL o problema é que você está inserindo pelo java, o atributo origem como nulo.

Da uma olhada no momento do insert, nessa linha: ps.setString(3, passageiroVo.getOrigem()); Confere qual o valor de passageiroVo.getOrigem()
Coloca esse codigo:

.... ps.setLong (1, gerarSequence("SEQUENCE_PASSAGEIRO")); ps.setLong (2, passageiroVo.getNumeroVoo()); System.out.printl("Origem : " + passageiroVo.getOrigem()); // veja o valor que é retornado no console. ps.setString(3, passageiroVo.getOrigem()); ps.setString(4, passageiroVo.getDestino()); ps.setString(5, passageiroVo.getNomePassageiro()); ps.setString(6, passageiroVo.getSobrenome()); ps.setLong (7, passageiroVo.getQuantidadeMalas()); ps.setDouble(8, passageiroVo.getValorPassagem()); ps.executeUpdate(); [/quote]

Olha só oque apareceu

Target URL -- http://192.168.1.40:8988/cadastro/view/CadastrarPassageiro.jsp 02/01/2013 00:39:33 oracle.wireless.its.ra.TelnetResourceAdapter run INFO: Versão do Industrial Telnet Server: Version 10.1.3.0.0 iniciada com sucesso. 13/01/02 00:40:00 Origem: null 13/01/02 00:40:00 java.sql.SQLException: ORA-01400: não é possível inserir NULL em ("NOTURNO"."TB_PASSAGEIRO"."ORIGEM")

eu to colocando origem, mesmo pq faço validação em JS na JSP antes de cadastrar, se tiver campo em branco ele não deixa cadastrar…

Mas veja que o valor está nullo:13/01/02 00:40:00 Origem: null
Precisa verificar isso, o porque ele está chegando nulo se na JSP você preenche o campo.

[quote=romarcio]Mas veja que o valor está nullo:13/01/02 00:40:00 Origem: null
Precisa verificar isso, o porque ele está chegando nulo se na JSP você preenche o campo.[/quote]

Ai que mora o perigo…!!!
Tem um norte pra mim começar analisar…?

Seguinte,

algum dos parametros que vc está atribuindo ao seu select (variáveis) que irá substituir os coringas ? está nula, e o seu banco não aceita este valor como nulo.

Vejo no Bd qual campo nao admite nulo e confira no sql.

[]s

[quote=chivalski][quote=romarcio]Mas veja que o valor está nullo:13/01/02 00:40:00 Origem: null
Precisa verificar isso, o porque ele está chegando nulo se na JSP você preenche o campo.[/quote]

Ai que mora o perigo…!!!
Tem um norte pra mim começar analisar…?[/quote]

O primeiro passo é analisar o que vem da JSP. Eu acredito que esteja vindo um valor null, talvez sua validação em JS não esteja retornando um valor nulo. Mas é isso, comece pelo que vem da JSP, vá para o próximo código antes de chamar o DAO e verifique se o valor lá está null ou não…

Querido, se me permite, segue um dica para melhorar seu DAO e a conexão com o Oracle! Você pode criar uma ConnectionFactory (Fábrica de Conexão) que te retorna uma conexão através do getConnection(), aqui vai um exemplo bem básico:


public class OracleConnectionFactory {

	public Connection getConnection() throws SQLException {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("Erro ao registrar o Driver!", e);
		}

		try {
			return DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:XE", " aqui vai o seu usuário", "e aqui vai sua senha");
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("Erro ao conectar com o Oracle", e);
		}
	}
}

Desta forma você evita copiar e colar código, o que pode te levar a erros que não se deve cometer, como abrir e fechar conexão!

em sendo assim seu DAO ficaria assim:


public class PassageirosDao  {  
  
   private Connection conexao = null;  
      
   public PassageiroDao() throws SQLException {

		this.conexao = new OracleConnectionFactory().getConnection();
	}
      
      
    public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException  
    {  
        PreparedStatement ps = null;  
        String sql = "INSERT INTO TB_PASSAGEIRO (CODIGO, NUMERO_VOO, ORIGEM, DESTINO, NOME_PASSAGEIRO, SOBRENOME_PASSAGEIRO, QUANTIDADE_MALAS, VALOR_PASSAGEM) VALUES (?,?,?,?,?,?,?,?)";  
        ps= conexao.prepareStatement(sql);

        // restante do dao aqui...

E a sua Classe PassageiroBe, não precisaria criar métodos para abrir e fechar conexão com o banco… ficando assim:


public class PassageirosBe  { 

     public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException  {  
          PassageirosDao dao = new PassageirosDao();  
          dao.cadastrarPassageiro(passageiroVo);    
    }  
}

Lembrando que você pode e/ou deve fechar a conexão no bloco finnaly dentro do seu DAO:


finally {
    if (conexao != null) {
	  conexao.close();
     } else {
	  conexao = null;
     }
} 

Depois você pode tirar essa responsabilidade do DAO de abrir e fechar conexão, isolando-a em outra Classe e recebendo a conexão pelo construtor… mas assim já fica melhor!

Mais uma coisa, o ideal acho que seria você criar a sequence no prórpio Oracle mais ou menos assim:


CREATE SEQUENCE nome_da_sua_tabela
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
NOCACHE
NOCYCLE;

e crie a Trigger tbem para atribuir a sequence criada a sua tabela:


CREATE OR REPLACE TRIGGER nome_da_trigger
  before INSERT ON nome_da_sua_tabela
  FOR EACH row 
    BEGIN 
       IF inserting THEN 
           IF :NEW.nome_da_sua_coluna IS NULL THEN
                SELECT sua_tabela.nextval INTO :NEW.sua_coluna FROM dual;
           END IF;
       END IF;
    END;  

Bom espero ter ajudado em algo! abraço!

[quote=ppro11]Querido, se me permite, segue um dica para melhorar seu DAO e a conexão com o Oracle! Você pode criar uma ConnectionFactory (Fábrica de Conexão) que te retorna uma conexão através do getConnection(), aqui vai um exemplo bem básico:


public class OracleConnectionFactory {

	public Connection getConnection() throws SQLException {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("Erro ao registrar o Driver!", e);
		}

		try {
			return DriverManager.getConnection(
					"jdbc:oracle:thin:@localhost:1521:XE", " aqui vai o seu usuário", "e aqui vai sua senha");
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException("Erro ao conectar com o Oracle", e);
		}
	}
}

Desta forma você evita copiar e colar código, o que pode te levar a erros que não se deve cometer, como abrir e fechar conexão!

em sendo assim seu DAO ficaria assim:


public class PassageirosDao  {  
  
   private Connection conexao = null;  
      
   public PassageiroDao() throws SQLException {

		this.conexao = new OracleConnectionFactory().getConnection();
	}
      
      
    public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException  
    {  
        PreparedStatement ps = null;  
        String sql = "INSERT INTO TB_PASSAGEIRO (CODIGO, NUMERO_VOO, ORIGEM, DESTINO, NOME_PASSAGEIRO, SOBRENOME_PASSAGEIRO, QUANTIDADE_MALAS, VALOR_PASSAGEM) VALUES (?,?,?,?,?,?,?,?)";  
        ps= conexao.prepareStatement(sql);

        // restante do dao aqui...

E a sua Classe PassageiroBe, não precisaria criar métodos para abrir e fechar conexão com o banco… ficando assim:


public class PassageirosBe  { 

     public void cadastrarPassageiro(PassageirosVo passageiroVo) throws SQLException  {  
          PassageirosDao dao = new PassageirosDao();  
          dao.cadastrarPassageiro(passageiroVo);    
    }  
}

Lembrando que você pode e/ou deve fechar a conexão no bloco finnaly dentro do seu DAO:


finally {
    if (conexao != null) {
	  conexao.close();
     } else {
	  conexao = null;
     }
} 

Depois você pode tirar essa responsabilidade do DAO de abrir e fechar conexão, isolando-a em outra Classe e recebendo a conexão pelo construtor… mas assim já fica melhor!

Mais uma coisa, o ideal acho que seria você criar a sequence no prórpio Oracle mais ou menos assim:


CREATE SEQUENCE nome_da_sua_tabela
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
NOCACHE
NOCYCLE;

e crie a Trigger tbem para atribuir a sequence criada a sua tabela:


CREATE OR REPLACE TRIGGER nome_da_trigger
  before INSERT ON nome_da_sua_tabela
  FOR EACH row 
    BEGIN 
       IF inserting THEN 
           IF :NEW.nome_da_sua_coluna IS NULL THEN
                SELECT sua_tabela.nextval INTO :NEW.sua_coluna FROM dual;
           END IF;
       END IF;
    END;  

Bom espero ter ajudado em algo! abraço![/quote]

Opa sua dica e mto valiosa, mais é que estou acompanhado as aulas de um curso que estou fazendo aqui na minha cidade, sei que em breve
estaremos usando dessa forma que vc citou…

E descobri o erro…rs
não estava colocando os valores dentro do Vo…na servlet…erro de principiante né…rs

Não coloquei isso como ta no primeiro post meu…rs

passageiros.setNumeroVoo(numeroVoo); passageiros.setOrigem(origem); passageiros.setDestino(destino); passageiros.setNomePassageiro(nomePassageiro); passageiros.setSobrenome(sobrenomePassageiro); passageiros.setQuantidadeMalas(quantidadeMalas); passageiros.setValorPassagem(valorPassagem);

[code] public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
PassageirosVo passageiros = new PassageirosVo();

	   String numeroVooString = request.getParameter("campo_numero_voo");
	   String origem = request.getParameter("campo_origem");
	   String destino = request.getParameter("campo_destino");
	   String nomePassageiro = request.getParameter("campo_nome");
	   String sobrenomePassageiro = request.getParameter("campo_sobrenome");
	   String quantidadeMalasString = request.getParameter("campo_quantidade_malas");
	   String valorPassagemString = request.getParameter("campo_valor_passagem");
	   
		
	   long numeroVoo = Long.parseLong(numeroVooString);
	   long quantidadeMalas = Long.parseLong(quantidadeMalasString);
	   double valorPassagem = Double.parseDouble(valorPassagemString);
		
		passageiros.setNumeroVoo(numeroVoo);
		passageiros.setOrigem(origem);
		passageiros.setDestino(destino);
		passageiros.setNomePassageiro(nomePassageiro);
		passageiros.setSobrenome(sobrenomePassageiro);
		passageiros.setQuantidadeMalas(quantidadeMalas);
		passageiros.setValorPassagem(valorPassagem);
		
	   PassageirosBe be = new PassageirosBe();
		be.cadastrarPassageiro(passageiros);
	   
	   request.setAttribute("passageiroVo", passageiros);
	   request.setAttribute("msgSucesso", "Passageiro cadastrado com sucesso!");
	   
	   RequestDispatcher rd = request.getRequestDispatcher("/view/CadastrarPassageiro.jsp");
	   rd.forward(request, response);
	}
   catch(Throwable e)
   {
      e.printStackTrace();
   }  [/code]