Problema com DAO e Fabrica de Conexão

3 respostas
A

Galera,

Estou com problema na linha da minha classe PaisDao referente ao getConnection. Ele mostra a seguinte mensagem: "Unhandled exception type SQLException". Como posso resolver este problema?

PaisDAO

package br.ccp.dao;

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

import br.ccp.fabrica.FabricaDeConexao;
import br.ccp.modelo.Pais;



public class PaisDao {
	
	private Connection conection;
	
	public void getConexao(){
		this.conection = FabricaDeConexao.getConnection(); //Codigo que está dando mensagem de erro.
		
	}
	

	public void insere(Pais pais)throws SQLException {
		PreparedStatement stmt = this.conection.prepareStatement (" insert into pais (pais, capital, idioma, populacao, moeda) values ('"+pais.getPais()+",'"+pais.getCapital()+",'"+pais.getIdioma()+",'"+pais.getPopulacao()+",'"+pais.getMoeda()+")");
		stmt.setString(1,pais.getPais());
		stmt.setString(2,pais.getCapital());
		stmt.execute();
		stmt.close();
		
			
	}
}

FabricaDeConexao

package br.ccp.fabrica;

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

public class FabricaDeConexao {
	
	public static Connection getConnection()throws SQLException {
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://localhost:3306/pais", "root", "XXX");
			}
		catch(ClassNotFoundException ex){
			throw new SQLException (ex.getMessage());
		}
		catch(Exception e){
			throw new SQLException (e.getMessage());
		}
		
	}
	

}

3 Respostas

Paulo_Silveira

Ola Andreia

Esse codigo nao compila pois a Fabrica pode lancar SQLException. Ja que SQLException eh uma das exceptions do tipo " chechada ", voce precisa dar try catch ou dar throw naquele outro metodo que nao esta compilando!

De uma olhada nao capitulo sobre excecoes da apostila de java da caelum para entender mais!

Outra coisa, usando uma IDE como o eclipse fica bem facil de resolver e descobrir esse tipo de problema

felipedamiani

Tenta desta forma:

package br.ccp.dao;

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

import br.ccp.fabrica.FabricaDeConexao;
import br.ccp.modelo.Pais;



public class PaisDao {
	
	private Connection conection;
	
	public void getConection(){
		
             if (conection == null) {
             conection = FabricaDeConexao.getConnection(); 
             }
             return connection;
		
	}
	

	public void insere(Pais pais)throws SQLException {
		PreparedStatement stmt = getConection().prepareStatement (" insert into pais (pais, capital, idioma, populacao, moeda) values ('"+pais.getPais()+",'"+pais.getCapital()+",'"+pais.getIdioma()+",'"+pais.getPopulacao()+",'"+pais.getMoeda()+")");
		stmt.setString(1,pais.getPais());
		stmt.setString(2,pais.getCapital());
		stmt.execute();
		stmt.close();
		getConection.close();
			
	}
}
A

Meninos,

Muito obrigada pela ajuda de vocês. Era justamente o que Paulo Silveira havia dito quanto a dar throw no método que não estava compilando. Quanto às apostilas da caelum, são realmente muito boas. Deixo o código para aqueles que tiverem o mesmo problema.

Obrigada!

package br.ccp.dao;

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


import br.ccp.fabrica.FabricaDeConexao;
import br.ccp.modelo.Pais;



public class PaisDao {
	
	private Connection conection;
	
	public void getConexao()throws SQLException{
		conection = FabricaDeConexao.getConnection();
	}
		

		
	

	public void insere(Pais pais)throws SQLException {
		PreparedStatement stmt = this.conection.prepareStatement (" insert into pais (pais, capital, idioma, populacao, moeda) values ('"+pais.getPais()+",'"+pais.getCapital()+",'"+pais.getIdioma()+",'"+pais.getPopulacao()+",'"+pais.getMoeda()+")");
		stmt.setString(1,pais.getPais());
		stmt.setString(2,pais.getCapital());
		stmt.execute();
		stmt.close();
		
			
	}
}
Criado 27 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 3
Participantes 3